タイトルが少しわかりにくい場合は申し訳ありませんが、私はそれを正しく表現することができませんでした。
基本的に、私が持っているのは次のシナリオです。
ユーザーがダウンロードする複数のファイルを選択し、[ダウンロード]ボタンを押してダウンロードを開始できるユーザーインターフェイス(WinForm)があります。フォームのロックを回避するために、すべてのダウンロードは非同期で処理されます。ただし、フォームが「応答していません」というメッセージでロックされることは望ましくありませんが、ダウンロードの実行中にユーザーがフォームフィールドを変更できるようにすることも望んでいません。
理想的には、ダウンロードの状態をユーザーに知らせるモーダルダイアログを生成したかったのです(つまり、モーダルダイアログを除いてFirefoxに似ています)。これにより、ユーザーはダウンロードの進行状況をよく確認できると同時に、ダイアログがアクティブなときに親フォームを操作するのを停止できるため、1つの石で2羽の鳥を殺します。
ただし、ダウンロードの進行状況をユーザーに適切に知らせるには、実行時にダイアログを更新する必要があります。これは私が壁にぶつかったところです。私の現在のアイデアは、ダイアログクラスのいくつかのパブリックメソッドを公開して、ファイルが完了したときに更新を送信し、バックグラウンドのダウンロードスレッド内からそれらを呼び出すことです(更新コントロールなどの適切なデリゲートを使用)
これは私が望むように機能すると確信していますが、この問題に対してもっとエレガントな解決策があるかどうか疑問に思っていました。ダイアログアプローチに限定されているとは思わないでください。私は、より良い代替手段を提供する可能性のあるすべてのアプローチを受け入れています。
乾杯、J