在WPF中将一个新的Dispatcher绑定到一个线程

本文关键字:一个 Dispatcher 绑定 线程 WPF | 更新日期: 2023-09-27 18:05:52

我有一种情况,我正在显示作为启动屏幕的Window。这个窗口是在一个与主ui线程分开的线程上创建的,因此它与自己的Dispatcher相关联(即我最终有2个Dispatchers, main ui dispatcher和"Splash"Dispatcher)。

当我关闭启动窗口时,与启动窗口的线程相关的Dispatcher关闭(尽管线程仍在运行,这是我想要的);但是,我希望能够在稍后的时间在同一线程上再次显示启动窗口。我面临的问题是第二次尝试这样做时,Dispatcher抱怨它已被关闭。

是否有一种方法可以强制新的Dispatcher与先前有Dispatcher与之关联的线程相关联?

或者有一种方法可以使Dispatcher在窗口关闭时不关闭?

我知道我可以通过创建一个新的线程来解决这个问题,但我真的不愿意这样做。理想情况下,我想有一个专门的线程负责带外通知,如飞溅和弹出"toasters"。

注意:我已经在这个要点上发布了相关代码:https://gist.github.com/DamianReeves/76771a031f05a8be042d

在WPF中将一个新的Dispatcher绑定到一个线程

回答你的第一个问题:是否有一种方法可以强制新的Dispatcher与先前有Dispatcher关联的线程相关联?

"当在线程上创建Dispatcher时,它成为唯一可以与线程关联的Dispatcher,即使Dispatcher被关闭。"

"如果Dispatcher被关闭,则无法重新启动。"

http://msdn.microsoft.com/en-us/library/vstudio/system.windows.threading.dispatcher