私は、特定の状態をユーザーに警告するフォームを作成するコンソールアプリケーションに取り組んでいます。後の段階で、コードベースはクラスライブラリになります。
ただし、今のところ、フォームを表示する必要があります(ここでは、ShowDialogが最適なメソッドだと思います)。次に、フォームを閉じる前に任意のメソッドを呼び出します。
例として、フォームを表示し、ラベルコントロールのテキスト値を設定し、n秒間待ってから、ラベルの値を変更してから、フォームを閉じる必要があります。これは少し些細なことのように聞こえますが、私は設計の概念実証を試みています。
調べてみましたが、ShowDialog()では、呼び出し元のメソッド/クラスのコードリストを続行する前にフォームを閉じる必要があるため、これが可能ではないようです。
これが私がこれまでに持っているものです:
PopUpForm myForm = new PopUpForm(string messageToDisplay);
myForm.ShowDialog();
//call myForm.someMethod() here, before the form closes
//dispose of the form, now that we've no use for it
myform.Dispose();
//target method in PopUpform class
public void someMethod()
{
lblText.Text = "Waiting for some reason";
//wait n number of seconds
lblText.Text = "Finished waiting. Form will now close";
//it doesn't matter if the form closes before the user can see this.
}
ShowDialog()はこの種の動作をサポートしていないようです。私はBackgroundWorkerスレッドを調べていますが、誰かがこれについて何かアドバイスがあるか、または以前にこれに遭遇したことがあるかどうか疑問に思っていました。