Событие Application.Idle не запускается в приложении WPF - PullRequest
5 голосов
/ 26 февраля 2010

Я использую сторонний элемент управления Windows Forms, который выполняет некоторые "отложенные" действия с помощью события Application.Idle.

Теперь, когда мы переносим наше приложение в WPF, эти действия перестали работать. Я обнаружил, что событие System.Windows.Forms.Application.Idle не генерируется должным образом.

Как я могу получить событие Idle для запуска в приложении WPF, чтобы я мог продолжать использовать этот сторонний элемент управления (в WindowsFormsHost)? не можно изменить элемент управления Windows Forms.

Ответы [ 2 ]

9 голосов
/ 26 февраля 2010

Вы должны прочитать эту страницу на MSDN , которая описывает поведение цикла сообщений в приложении WPF. В частности, похоже, что класс ComponentDispatcher можно использовать для перехвата события ThreadIdle, которое примерно соответствует событию Windows Forms Application.Idle.

Затем можно использовать метод System.Windows.Forms.Application.RaiseIdle , чтобы вызвать событие Idle, как ожидает компонент.

0 голосов
/ 26 февраля 2010

Если вы используете приложение WPF, вы фактически больше не используете класс System.Windows.Forms.Application для запуска приложения, даже если ваше приложение содержит элемент управления Windows Forms.

Вместо этого выиспользуют класс System.Windows.Application (другое пространство имен).

...