有人能够帮我解决一个问题吗?
我正在开发一个WPF项目,情景如下:
我需要弹出一个模态窗口在主UI线程上,然后关闭它。这些操作是从另一个UI线程开始的,以防止用户点击主UI窗口。然后我关闭这个窗口。主要代码如下所示。而且它可以工作。
据我所知,在没有使用调度程序的代码(即在UI线程上),ShowDialog()
方法在返回之前将不会被执行,是否有人对多线程有经验?
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();
}
感谢您的时间!