Wpf DataContext и потоки

183
04 января 2019, 14:30

Вопрос скорее идеологический, как правильно подходить к задаче обновления данных в ModelView.

Имеем DataContext, к нему привязан класс ModelView где так же в нем есть функции обработки данных ObservableCollection. Операции связаны с большим объемом данных, по этому во время обработки ui интерфейс замораживается. Очевидно что можно использовать Task,Thread,BackgroundWorker, но .. Как только наступает работа с коллекциями, так возникает необходимость вернуться в поток с ui через Dispatcher, иначе возникает ошибка доступа из другого потока. Но, 99% времени занимает работа именно с коллекциями, и возвращаться в ui поток приходится постоянно, что сводит на нет все усилия выделить эту процедуру в отдельный поток.

Как идеологический более правильно решать такую задачу? Отключать DataContext на время обновления ?

P.S. в дополнение к дискуссии опубликую прототип ObservableCollection с "пониженным" числом уведомлений NotifyChange:) может пригодиться кому, хотя вещь простая.

public class ObservableCollectionExtension<T> : ObservableCollection<T>
{
    private bool __isNotify = true;
    protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    {
        if (__isNotify)
            base.OnCollectionChanged(e);
    }
    public void NotifyOff()
    {
        __isNotify = false;
    }
    public void NotifyOn()
    {
        __isNotify = true;
        base.OnCollectionChanged(new 
             NotifyCollectionChangedEventArgs(
                   NotifyCollectionChangedAction.Reset));
    }
    public void ClearNoNotify()
    {
        NotifyOff();
        ClearItems();
        NotifyOn();
    }
}
READ ALSO
HtmlAgilityPack не видит элемент по XPath

HtmlAgilityPack не видит элемент по XPath

Проблема следующая, на html странице есть элемент

407
Получить список хуков

Получить список хуков

Можно ли получить список глобальных хуков, которые установлены в системе в данный момент?

175
Уникальные значения HashSet vs Distinct

Уникальные значения HashSet vs Distinct

Замер скоростей поиска уникальных значений показал разницу в 2 раза

214
Как рисуется графика в devexpress?

Как рисуется графика в devexpress?

Мне необходимо отрисовать кодом представленный ниже элемент с помощью devexpress используя diagram controlТак как в devepress я новичок,то как вообще обычно...

174