如何停止多个 WPF 调度程序之一?
我有一个带有一些后台线程的应用程序(实际上是一个进程内 WCF 服务)。 每个线程运行自己的 Dispatcher 来使用一些 WPF 类(MediaPlayer 对象来处理一些音频/视频文件;它使用 BeginInvoke 对一些委托进行排队,最后调用 Dispatcher.Run)。 处理完成后,我想关闭其调度程序,以便线程可以完成。 对 BeginInvokeShutdown 的调用会关闭应用程序中的每个调度程序,从而导致应用程序关闭。
我能做些什么,让调度程序完成消息循环吗?
I have an app with some background threads (actually an in-proc WCF-Service). Each thread runs its own Dispatcher to use some WPF-classes (MediaPlayer-objects to process some audio/video-files; it queues some delegates with BeginInvoke and finally call Dispatcher.Run). When the processing is done, I want to shutdown its dispatcher so that the thread can finish. A call to BeginInvokeShutdown shutdowns every dispatcher in the app, which results in closing the app.
Is there anything I can do, so the dispatcher finishes the message loop?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好的,当您在 WPF 应用程序中托管 WCF 服务时,该服务的被调用方法具有与应用程序相同的调度程序。 如果我使用自己的调度程序启动一个新线程,InvokeShutdown 将按预期工作。
Ok, when you host a WCF-Service inside a WPF-App, the called method of the service has the same dispatcher as the app. If I start a new thread with its own dispatcher, InvokeShutdown works as expected.