System.Drawing クラスを使用して画像のリストを処理しています。通常の foreach ループ内で画像を処理する場合はすべて問題ありませんが、画像をループしている場合 (画像とは、使い捨ての System.Drawing.Image インスタンスを意味するのではなく、画像のソース (URL) を意味します) Parallel.ForEach を使用して実行しますメモリ不足です。プロセスがどんどん大きくなります (> 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);
}