Как остановить один из нескольких диспетчеров WPF?

У меня есть приложение с фоновыми потоками (на самом деле внутрипроцессная служба WCF). Каждый поток запускает свой собственный Dispatcher для использования некоторых WPF-классов (MediaPlayer-объекты для обработки некоторых аудио / видео файлов; он ставит в очередь некоторых делегатов с BeginInvoke и, наконец, вызывает Dispatcher.Run). Когда обработка завершена, я хочу закрыть его диспетчер, чтобы поток мог завершить работу. Вызов BeginInvokeShutdown отключает всех диспетчеров в приложении, что приводит к закрытию приложения.

Могу ли я что-нибудь сделать, чтобы диспетчер завершил цикл сообщений?


person Lars    schedule 20.01.2009    source источник


Ответы (1)


Хорошо, когда вы размещаете службу WCF внутри приложения WPF, вызываемый метод службы имеет тот же диспетчер, что и приложение. Если я запускаю новый поток с его собственным диспетчером, InvokeShutdown работает должным образом.

person Lars    schedule 20.01.2009