【发布时间】:2012-01-23 23:02:22
【问题描述】:
我有一个 WPF 应用程序,当单击按钮时,会实例化一个新窗口 (BrowserWindow) 来加载全屏 WebBrowser 控件。像这样在第二个线程上启动窗口。
private void BrowserThreadStart(BrowserWindow browser, String address)
{
browser = new BrowserWindow();
browser.LoadPage(address);
browser.Show();
System.Windows.Threading.Dispatcher.Run();
}
private void Press(object sender, MouseButtonEventArgs e)
{
Thread mainBrowserThread = new Thread(() => BrowserThreadStart(myBrowser, "http://www.google.com"));
mainBrowserThread.SetApartmentState(ApartmentState.STA);
mainBrowserThread.IsBackground = true;
mainBrowserThread.Start();
}
这么多效果很好。
基于此,我的MainWindow 以编程方式隐藏或关闭在单独线程上运行的BrowserWindow 实例的正确方法是什么?
我注意到在我的主线程上(在 MainWindow 中),BrowserWindow myBrowser 为空(尽管我可以看到它在第二个线程上启动并运行。
【问题讨论】:
标签: c# wpf multithreading thread-safety