c# - 将新的 Dispatcher 绑定(bind)到 WPF 中的线程

标签 c# wpf multithreading dispatcher

我有一种情况,我正在显示一个用作初始屏幕的 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/

相关文章:

python - 发出队列中作业结束的信号?

python - _lsprof.c 针对 python 多线程的探查器行为

c# - 如何使用 C# 使用 Twitterizer 发推文

c# - 将控制台输出重定向到 winforms ListBox

c# - 在 WPF 中单击时更改菜单背景

WPF 绑定(bind) : How to databind to Grid?

c# - 序列化问题(参数对象的类型不是原始类型)

c# - 需要 AvalonDock ILayoutUpdateStrategy 示例

c# - 为 MenuItem 使用 DisplayMemeberBinding 的多重绑定(bind)

ruby-on-rails - 我可以在Rails应用程序的Heroku上使用Puma线程吗?