C# Windows サービス アプリの webdav サーバーから巨大な (~1 GB) メディア ファイルをダウンロードする必要がある状況があります。私はどちらがより良いアプローチであるかを考えていました:
- WebClient 非同期メソッドを使用して配列に格納されたファイルをダウンロードし、メイン スレッドでコールバックしてダウンロードの完了を通知します。手動リセット イベントを同期に使用できます
- バックグラウンド ワーカーと Web クライアントの同期ダウンロード メソッドを使用する
- ThreadPool と Web クライアントの同期ダウンロード メソッドを使用する
- 手動スレッドと Web クライアントの同期ダウンロード メソッドを使用する
Web クライアントの非同期ダウンロード API を試してみましたが、メディアのダウンロードを初期化した後にメイン スレッドで Web サービスを呼び出すと、メイン スレッドがブロックされたように見え、最終的に Operation Timed Out がスローされ、ブロックされていないように見えます。メディア ファイルは並行してダウンロードされるのではなく、ダウンロード フォルダーで見られるように 1 つずつダウンロードされます。
あなたの提案は何でしょう。