Советы по использованию приоритета и привязки диспетчера - PullRequest
3 голосов
/ 20 сентября 2011

В моем приложении я использую время простоя потока пользовательского интерфейса для разгрузки дорогостоящих операций, как описано в статье MSDN о модели потоков WPF .

GenerateDataAction = () => { GenerateData(); };
Dispatcher.BeginInvoke(GenerateDataAction, DispatcherPriority.Render, null);

В методе GenerateDate() я обращаюсь к базе данных MSSQL, обрабатываю данные и обновляю привязки в модели представления.После реализации этого я заметил, что некоторые привязки не обновляются должным образом или не обновляются вообще.Я проверил вывод на наличие ошибок привязки, и второй программист подтвердил логику, а также установил точки останова в методе изменения свойства зависимости (точки останова не попадают).

Существуют ли рекомендации по , которые DispatcherPriority ( ссылка на MSDN ) следует использовать, когда вызываемое действие содержит привязки?

1 Ответ

3 голосов
/ 20 сентября 2011

Очень хорошая статья о диспетчере WPF: http://weblogs.asp.net/pawanmishra/archive/2010/06/06/understanding-dispatcher-in-wpf.aspx

Как программист WPF, мы можем перенести нашу нестандартную логику очередь поддерживается классом Dispatcher и ассоциируется с более низким значение приоритета для этого рабочего элемента. На основании значения поля приоритета соответствующий код будет выполнен с указанным интервалом. Здесь важно отметить, что вся работа все еще выполняется по UIthread, просто с помощью DispatcherPriority мы расставили приоритеты в наших задачах. В идеале рекомендуется отдавать приоритет значения меньше 7 (Render) для пользовательской логики, которую мы хотим выполнить с помощью диспетчера. Чаще всего значение приоритета Background используется для пользовательской логики конкретного приложения. МИЗ Проверка правописания слов осуществляется с помощью этого механизма и значение приоритета ApplicationIdle.

...