В поисках объяснения учета WPF DispatcherHooks

Я пытаюсь использовать DispatcherHooks, чтобы измерить длину очереди диспетчера потоков пользовательского интерфейса с кодом, похожим на этот пост. Я также усовершенствовал ловушки для отслеживания операций по приоритету и обнаружил, что число завершений + прерываний намного больше, чем количество опубликованных операций в некоторых приоритетах.

Например, в пятисекундном интервале выборки я вижу 7 операций, размещенных с фоновым приоритетом, но более 1000 завершений. Для приоритета рендеринга это почти так, как будто каждое сообщение приводит к двум дополнениям.

Другие категории выглядят разумно, но без объяснения Render / Background, это бросает тень на точность / актуальность других приоритетов. Это также не вопрос изменения приоритетов, так как общие итоги не совпадают.

Кто-нибудь может объяснить, что я вижу?

1 ответ

Выяснили это с учетом приоритета "Неактивно". Похоже, когда многие (все?) Операции Background и Render ставятся в очередь, их приоритет при публикации "неактивен", но их приоритет при завершении отражает фактический приоритет операции, поэтому общая картина длины очереди является разумной, но похоже, что я не могу получить детализацию по приоритету (что для моего сценария, вероятно, хорошо).

Другие вопросы по тегам