しばらく前に、通知のためにユーザーにメッセージ ボックスを表示する必要がある状況に遭遇しましたが、GUI スレッドをブロックするため、MessageBox.Show を使用できませんでした (ダイアログがアクティブな間、画面上の何も更新されません)。代替案はありますか?
[当時代替案をコーディングしましたが、気に入りません。何も良いものが表示されない場合は、回答として投稿します]
編集: ダイアログはメイン ウィンドウの上にフロートする必要があります。タスクバーに表示されるかどうかは気にしません。特定の状況では、一度に複数のダイアログがアクティブになる場合があります。
補遺: 私の解決策は、OK および CANCEL ボタンを提供して Completed および Canceled イベントを発行する基本フォームでした。OK は、サブクラスのオーバーライドのために仮想 ValidateData を呼び出しました。呼び出し元のフォームは、プロパティを使用して毎回フォームを再作成することを回避し (フォームは閉じずに非表示にするだけでした)、アクティブなフォームのディクショナリを保持して、同じフォームが複数回アクティブ化されるのを防ぎました。これはモーダル フォームのように見え、一度に複数のポップアップ フォームをサポートしますが、メインの GUI スレッドを拘束しません。