У меня есть ObservableCollection<T>
, который будет содержать много предметов. Данные будут получены асинхронно с использованием фонового рабочего (это работает отлично и быстро).ObservableCollection <T> быстрое заполнение, но медленная визуализация связывания
Но если я попытаюсь связать огромную коллекцию с listbox/listview (независимо) на BackgroundWorkerCompletedTask, визуализация займет много времени, пока графический интерфейс не будет висеть до завершения привязки/визуализации.
Любые идеи о том, как улучшить производительность или предотвратить это поведение?
void bgGetData_DoWork(object sender, DoWorkEventArgs e)
{
HugeData();
}
void bgGetData_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
devices.Add((ServiceReference1.Device)e.UserState);
}
private void HugeData()
{
foreach (ServiceReference1.Device dev in Proxy.client.GetHugeDate())
{
bgGetData.ReportProgress(0, dev);
}
}
Данные связаны:
myControl.ItemsSource = devices;
Спасибо.
если вы использовали ObservableCollection пользовательский интерфейс должен обновлять при каждом обновлении к нему ... Вы можете поделиться код, как у г обновление ObservableCollection? – Nitin
Есть ли способ добавить элементы по частям во время поиска/создания в фоном? Вы могли бы использовать элементы с помощью 'ProgressChanged'. – meilke
попробуйте обновить пользовательский интерфейс с каждым добавленным в коллекцию элементом, а не обновлять всю огромную коллекцию, когда она заканчивается ... –