0

約 60,000 の画像 URL があり、それらの画像をダウンロードするために webclient の複数のインスタンスを使用してそれらの画像をダウンロードしています。しかし、画像のダウンロード中に、約 15000 枚の画像の後に SystemOutOfMemory Exception が発生します。では、この例外が発生しないように webclient を最適化するにはどうすればよいですか。

私のコードは次のようになります。

if (!File.Exists(download_image_path))
{
wc = new System.Net.WebClient();
wc.DownloadFile(imgURL, download_image_path);
wc.Dispose();
}

そして、それはループで実行されています。

4

4 に答える 4

1

オブジェクト プールの設計パターンを使用します。

webclient の 60000 インスタンス (応答から見える) を使用する代わりに、最適な 10/15/100 を使用します。keep も設定可能です。

于 2012-11-26T07:58:26.337 に答える
1

一度にいくつかの URL を取得して別の関数に送信するか、代わりに別のアプリケーションを使用することをお勧めします。これらの画像が完全にダウンロードされたら、そのアプリケーションを閉じ、別のアプリケーションを起動して、別の URL のバッチをコマンド ライン引数として渡します。ヘルプ。

于 2012-12-17T10:30:27.460 に答える
0

一度に 1 つのイメージをダウンロードしますか? 速度が問題にならないのであれば、それが最も簡単なことでしょう。

于 2012-11-26T07:41:57.017 に答える
0
  1. 1 秒ごとに実行されるタイマー コントロールを使用する
  2. コードをタイマー内に配置します。
  3. File_inDownload というカウンターを作成し、タイマーでそれをインクリメントします。タイマーは、ダウンロードを処理するために File_inDownload <100 もチェックする必要があります。
  4. オブジェクト wc のイベント DownloadFileCompleted を処理します
  5. その場合、カウンタ File_inDownload を 1 減らします。
于 2012-11-26T09:03:54.140 に答える