非同期に実行できない長いプロセスがあるため、ファイルをコピーするときのエクスプローラーと同じように、進行状況ダイアログが表示されます。ダイアログをモーダルに表示し、操作を実行し (抽象化するためにファイルのコピーと呼びます)、進行状況ダイアログを更新し、Application.DoEvents() でメッセージを送り込んで、アプリケーションのメイン フレームのペイントと応答性を維持します。
ダイアログはモーダルであるため、ユーザーは監視またはキャンセル以外のことはできません。つまり、メニュー項目を選択したり、ボタンをクリックしたりすることはできません。
私は常に、Application.DoEvents は非常に邪悪であると信じてきました。再入可能にするつもりのないコードを再入力できるからです。しかし、この場合、進行状況ダイアログはモーダルであるため、これが悪いまたは危険な解決策である理由がわかりません。
私は何かを見落としていますか、それとも Application.DoEvents を使用してメッセージを送り込むことは、モーダル ダイアログを使用する正当な行為ですか?