0

我有大约 60,000 个图像 URL,我正在使用多个 webclient 实例下载这些图像以下载这些图像。但是在下载图像时,它会在大约 15000 张图像后给出 SystemOutOfMemory 异常。那么如何优化 webclient 使其不会出现此异常。

我的代码看起来像这样:

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

它正在循环运行。

4

4 回答 4

1

使用对象池设计模式。

不要使用 60000 个 webclient 实例(从您的响应中查看),而是使用 10/15/100 任何最佳值。保持也是可配置的。

于 2012-11-26T07:58:26.337 回答
1

一次获取一些 url 并将其发送到另一个函数,或者我建议您改用另一个应用程序,当这些图像完全下载后关闭该应用程序,然后启动另一个应用程序并将另一批 url 作为命令行参数传递,将帮助。

于 2012-12-17T10:30:27.460 回答
0

一次下载一张图片?如果速度不是问题,那将是最简单的事情。

于 2012-11-26T07:41:57.017 回答
0
  1. 使用每 1 秒运行一次的计时器控件
  2. 将您的代码放在计时器内。
  3. 创建一个计数器:File_inDownload,并在计时器中增加它。计时器还应检查 File_inDownload <100 以处理下载
  4. 处理对象 wc 的 eventDownloadFileCompleted
  5. 在这种情况下,将计数器 File_inDownload 减 1。
于 2012-11-26T09:03:54.140 回答