【发布时间】:2015-12-02 08:05:25
【问题描述】:
我有一个控制台应用程序,它在类似于此示例的单独线程上打开模式 WPF 窗口:
http://reedcopsey.com/2011/11/28/launching-a-wpf-window-in-a-separate-thread-part-1/
// Create a thread
Thread newWindowThread = new Thread(new ThreadStart( () =>
{
// Create and show the Window
Window1 tempWindow = new Window1();
tempWindow.Show();
// Start the Dispatcher Processing
System.Windows.Threading.Dispatcher.Run();
}));
但我使用的是 ShowDialog 而不是 Show。
我看到的是,在这种情况下我不需要启动调度程序线程。 ShowDialog 似乎在幕后做到了这一点。
但是调度线程的关闭呢?在这种情况下,我是否需要通过调用 InvokeShutdown 来明确执行此操作? 或者窗口上的 close 方法已经处理了吗?
【问题讨论】:
-
不幸的是,我需要这样做,因为我必须处理遗留应用程序。在某些情况下,该应用程序需要显示模式对话框。所以现在没有别的办法了。
-
如果您必须将对话框放入旧版应用程序中,我认为使用p-invoke 到MessageBox 将占用最小的空间。您不想过多地 WPF 化您的旧应用程序。
-
这是我的第一个方法。不是我的决定,但需要有不同的风格,需要 WPF。
标签: c# wpf dispatcher