私はファイルをコピーしているときにエクスプローラと同じように、私は非同期に実行できない長いプロセスを持っています。私は進捗ダイアログを持っています。ダイアログをモーダルに表示し、操作を実行して(ファイルをコピーして抽象的に保つ)、進行状況ダイアログを更新し、Application.DoEvents()でメッセージをポンピングして、アプリケーションのメインフレームをペイントして応答性にします。モーダル進捗ダイアログが表示されている間に "Application.DoEvents"を呼び出すことはできますか?
ダイアログはモーダルなので、ユーザーは監視またはキャンセル以外の操作はできません。つまり、メニュー項目を選択したり、任意のボタンをクリックすることはできません。
私はいつもあなたがリエントラントではないコードを再入力することができるので、Application.DoEventsは非常に悪いと考えています。しかしこの場合、進捗ダイアログはモーダルなので、これが悪いまたは危険な解決策である理由はわかりません。
私は何かを見落としているのですか、またはApplication.DoEventsでメッセージをポンピングしていますか、モーダルダイアログをアップするのが正当なのでしょうか?
少なくともバックグラウンドスレッドで実行できないのはなぜですか?バックグラウンドワーカーを使用し、Control.BeginInvokeを使用してUIを更新してください。 – BFree
[一部](http://stackoverflow.com/a/5183623/825024)[読み取り](http://stackoverflow.com/a/1115410/825024)。 – Otiel