我有一种情况,我正在显示一个用作初始屏幕的 Window
。这个窗口是在与主 ui 线程不同的线程上创建的,因此它与它自己的 Dispatcher
相关联(即我最终有 2 个 Dispatcher,Main Ui dispatcher 和“Splash”调度程序
).
当我关闭启动窗口时,与启动窗口线程关联的 Dispatcher
关闭(尽管线程仍在运行,这正是我想要的);但是,我希望稍后能够在同一线程上再次显示启动窗口。我遇到的问题是我第二次尝试执行此操作时 Dispatcher
提示它已被关闭。
有没有办法强制将新的 Dispatcher
与之前关联了 Dispatcher
的线程相关联?
或者有没有办法让 Dispatcher
在窗口关闭时不关闭?
我知道我可以通过创建一个新线程来解决这个问题,但我真的不想这样做。理想情况下,我希望有一个专用线程负责带外通知,例如启动画面和弹出式“ toastr ”。
注意: 我已经在这个要点上发布了相关代码:https://gist.github.com/DamianReeves/76771a031f05a8be042d
最佳答案
回答你的第一个问题: 有没有一种方法可以强制将新的 Dispatcher 与之前关联了 Dispatcher 的线程相关联?
“当在线程上创建 Dispatcher 时,它成为唯一可以与线程关联的 Dispatcher,即使 Dispatcher 已关闭。”
还有
“如果 Dispatcher 关闭,则无法重新启动。”
http://msdn.microsoft.com/en-us/library/vstudio/system.windows.threading.dispatcher 在备注部分。
关于c# - 将新的 Dispatcher 绑定(bind)到 WPF 中的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23958345/