系统OutOfMemoryException

时间:2012-11-26 07:38:12

标签: c# .net c#-4.0 optimization memory-management

我有大约60,000个图片网址,我正在使用多个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 个答案:

答案 0 :(得分:1)

使用Object Pool设计模式。

不使用60000个webclient实例(从您的响应中查看),而是使用10/15/100,无论什么是最佳的。另外,keep是可配置的。

答案 1 :(得分:1)

一次取一些网址并将其发送到另一个功能,或者我建议您使用另一个应用程序,当这些图像完全下载然后关闭该应用程序,然后启动另一个应用程序并将另一批网址作为命令行传递争论,会有所帮助。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

  1. 使用每1秒运行一次的定时器控件
  2. 将代码放在计时器内。
  3. 创建一个计数器:File_inDownload,和     在计时器中递增计时器也应该检查     File_inDownload< 100来处理下载
  4. 处理对象wc的eventDownloadFileCompleted
  5. 在该事件中,将计数器File_inDownload减少1。