Как выполняются конвертеры WPF? - PullRequest
3 голосов
/ 29 июля 2011

Я сталкиваюсь с проблемами рендеринга в очень сложном пользовательском интерфейсе WPF, который содержит, среди прочего, много конвертеров (IValueConverter, IMultiValueConverter).

Я хотел бы знать, могут ли преобразователи быть вовлечены в это.

Кто-нибудь знает, как работают конвертеры WPF? Они выполняются параллельно, а затем синхронизируются с потоком пользовательского интерфейса? или есть какой-то цикл foreach, который обрабатывает каждый конвертер?

1 Ответ

8 голосов
/ 29 июля 2011

Преобразователи выполняются в UI-потоке, вы можете проверить это, заблокировав поток, используя что-то вроде Thread.Sleep(10000).Пользовательский интерфейс управляется в очереди диспетчера, см. Справочную модель потоков 1003 * для получения дополнительной информации, обновления привязок помещаются в эту очередь.Конвертеры вызываются, если привязка была обновлена, обычно они не вызываются одновременно.

(см. Также хорошие комментарии ниже)

...