如何停止多个 WPF 调度程序之一?

发布于 2024-07-12 19:48:52 字数 267 浏览 5 评论 0原文

我有一个带有一些后台线程的应用程序(实际上是一个进程内 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

别把无礼当个性 2024-07-19 19:48:52

好的,当您在 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文