从Windows窗体应用程序打开另一个线程中的WPF窗口

MrE*_*ndo 8 c# wpf multithreading winforms

好的,我应该说这个我不确定这是否是解决这个问题的正确方法,但......

基本上我在WPF中创建了一个窗口,用于在我的应用程序中显示通知(有点像Outlook新邮件通知).我想尝试在它自己的线程中显示这个窗口(它可能在将来做一些工作).

我使用WPF创建了Window,因为它在处理AlwaysOnTop和Fading In和Out等方面更加出色.

显示通知的应用程序是3.5 Windows窗体应用程序.我见过类似于这个SOF的例子:C#winforms启动(Splash)表单没有隐藏在一个不同的线程中显示一个Form但是我无法用WPF窗口启动一个新的Message Loop.

我试过在新线程中调用Notification.Show(),但Window永远不会显示.

  1. 是否有可能在它自己的线程中显示这个WPF?

  2. 为什么我看到一些资源说您不应该在单独的线程中显示任何UI?

Jon*_*eet 15

WPF线程模型对这个细节.寻找"多个Windows,多个线程".

基本上,您启动一​​个新线程,创建相关窗口然后调用

System.Windows.Threading.Dispatcher.Run();
Run Code Online (Sandbox Code Playgroud)

为了在新线程上运行该窗口的调度程序.