在我的程序中,我需要弹出模态窗口提示用户进行一些操作,一旦用户完成操作,模态窗口就会自动关闭。
在一个线程中,代码将被阻塞,ShowDialog()
之后的代码无法执行。主要源代码如下:
MyMessageBox myMsgBox = null
private void UserInputRead()
{
myMsgBox = new MyMessageBox(); //customerized messageBox extends from Form
//some operation
Thread t1 = new Thread(UserInputListener);
t1.start();
myMsgBox.ShowDialog();
Console.WriteLine("...after showDialog()");
}
在另一个线程中,它监视用户输入,如果满足要求则处理模态对话框。
private void UserInputListerner()
{
//monitor user input
if(xxx) //user input meet the requirement
{
myMsgBox.Dispose()
}
}
当用户输入满足要求时,模态对话框已经被释放,但是之后的代码ShowDialog()
仍然无法执行,但是当我尝试使用Timer或者KeyEventHandler
处理这个模态对话框时,之后的代码ShowDialog()
可以被执行。
要求是当用户在关闭模态窗口后完成一些操作和一些其他处理时,自动关闭模态窗口。
任何理想的如何解决它并实现这个要求?提前非常感谢。