有人可以阐明我遇到的问题吗?
我正在做一个 wpf 项目。场景如下:
我需要在主 UI 线程上弹出一个窗口(模型窗口)然后关闭它。这些工作从另一个 UI 线程开始(以阻止用户单击主 UI 窗口。)然后我关闭此窗口。主要代码如下所示。它有效。
据我所知,close 方法在返回之前不会被执行ShowDialog()
(至少在 UI 线程上是这种情况,我的意思是没有调度程序的代码),有人有多线程经验吗?
Window window;
private void Button_Click(object sender, RoutedEventArgs e)
{
Thread thread = new Thread(() =>
{
//create a window and let user work from this thread
//code is omitted.
//create another window on main UI thread
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
window = new Window();
window.ShowDialog();
}));
//do some work here
Thread.Sleep(1000);
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
//Thread.Sleep(1000);
window.Close();
}));
});
thread.Start();
}
感谢您的时间!