我正在使用 System.Drawing 类处理图像列表。如果我在正常的 foreach 循环中处理图像,一切都很好,但是当我使用 Parallel.ForEach 遍历图像(图像我不是指任何一次性 System.Drawing.Image 实例,而是图像的源(url))时,我运行记不清。我的进程变得越来越大(> 1GB)。图形缓冲区似乎没有被释放,尽管我很注意释放所有资源。这可以通过切换到非并行 foreach(...) 来确认。该过程保持在大约 60 MB。
你遇到过这样的问题吗?
// memory "leak". process grows beyound 1GB to infinity
Parallel.ForEach(urls, url =>
{
ImageResizer.DownloadAndResizeImage(url);
});
// no memory "leak"
foreach (string url in urls)
{
ImageResizer.DownloadAndResizeImage(url);
}