软件以一些计算开始线程,然后显示另一个Form
作为带有ShowDialog
的等待对话框。 BackgroundWorker
线程完成工作后,Form
事件中的RunWorkerCompleted
关闭,另一个计算从另一个Form
开始,作为一个等待对话框(带有{{1} })。
问题在于直到关闭第二个等待对话框之前,第一个等待对话框仍然可见。在第一个对话框真正关闭后,如何等待显示第二个对话框?
简单的代码可重现:
ShowDialog
答案 0 :(得分:4)
请注意,ShowDialog()是阻塞调用。当显示_msg2时,您仍未从构造函数返回。
这是一个快速解决方案:
public Form1()
{
_bgw.DoWork += BgwDoWork;
_bgw.RunWorkerCompleted += BgwRunWorkerCompleted;
_bgw.RunWorkerAsync();
_msg.ShowDialog();
_msg2.ShowDialog(); // here
}
private void BgwRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
_msg.Close();
//_msg2.ShowDialog(); // not here
}