私のプログラムでは、ユーザーにいくつかの操作を行うようにモーダル ウィンドウ プロンプトを表示する必要があります。ユーザーが操作を終了すると、モーダル ウィンドウは自動的に閉じます。
1 つのスレッドでは、コードは でブロックされ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()
実行できませんが、タイマーを使用するかKeyEventHandler
、このモーダル ダイアログを破棄しようとすると、後のコードをShowDialog()
実行できます。
要件は、ユーザーがモーダル ウィンドウを閉じた後にいくつかの操作やその他の処理を終了したときに、モーダル ウィンドウを自動的に閉じることです。
それを解決してこの要件を実装する理想的な方法はありますか? よろしくお願いします。