C# – Opening a WPF Window in another Thread from a Windows Forms App

cmultithreadingwinformswpf

OK, I should start this off by saying I'm not sure this is necessarily the right way to deal with this but…

Basically I have created a Window in WPF for displaying notifications in my application (a bit like Outlook New Mail notification). I would like to try and show this Window in it's own thread (it might do some work in the future).

I've created the Window using WPF because it's a bit nicer at handling things like AlwaysOnTop and Fading In and Out.

The application that shows the notification is a 3.5 Windows Forms App. I've seen examples similar to this SOF: C# winforms startup (Splash) form not hiding for showing a Form in a different thread however I'm unable to start a new Message Loop with the WPF Window.

I've tried just calling Notification.Show() in a new thread however the Window never displays.

  1. Is it possible to show this WPF in it's own thread?

  2. Why do I see some resources say that you should not show any UI in a separate thread?

Best Answer

The WPF Threading Model has details on this. Look for "Multiple Windows, Multiple Threads."

Basically, you start a new thread, which creates the relevant window and then calls

System.Windows.Threading.Dispatcher.Run();

in order to run a dispatcher for that window, on the new thread.