c# - 从 Windows 窗体应用程序在另一个线程中打开 WPF 窗口

标签 c# wpf winforms multithreading

好的,我应该先说我不确定这是否一定是处理此问题的正确方法,但是...

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

我使用 WPF 创建了窗口,因为它可以更好地处理诸如 AlwaysOnTop 和淡入淡出之类的事情。

显示通知的应用程序是 3.5 Windows 窗体应用程序。我见过与此类似的示例 SOF: C# winforms startup (Splash) form not hiding用于在不同线程中显示表单,但是我无法使用 WPF 窗口启动新的消息循环。

我试过在新线程中调用 Notification.Show(),但窗口从未显示。

  1. 是否可以在它自己的线程中显示此 WPF?

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

最佳答案

WPF Threading Model有这方面的详细信息。寻找“多窗口,多线程”。

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

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

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

关于c# - 从 Windows 窗体应用程序在另一个线程中打开 WPF 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/729584/

相关文章:

c# - .NET DateTimePicker 中的毫秒值

c# - Silverlight/WPF : I Don't Want ICommand to Change Button's IsEnabled Property, 这可能吗?

c# - wpf 窗口在尝试显示时抛出异常

wpf - MVVM应用程序无法正确还原状态

c# - 覆盖方法调用,使其在特定情况下不被调用

c# - 如何在 WinForms 项目中将 XML 用作 DataGridView 的数据源?

c# - Enumerable.FirstOrDefault 方法是否可以处理空参数

c# - Linq to SQL Int16 在 SQL 命令中转换为 Int32

c# - 为什么在以编程方式控制时 UI 没有响应?

c# - 如何在 PropertyGrid 中动态显示或隐藏属性?