我有一个 Parallel foreach 函数,它创建一个类的新实例,操作图片并将其保存到磁盘...
然而,大约 400 次中的 4 次,图片被保存到磁盘,但没有被操纵,我的理论是,当它发生时,我班级中存在的一些属性是空的,当它们不应该......
4 个(有时是 3 个)错误大多发生在并行循环的前 10 个图像中。
没有错误消息,它只是跳过了我的一些代码,出于某种原因......我的断点在并行时不起作用,因此很难调试。
关于如何进行/调试/修复的任何建议?
要求的代码
private static void GenerateIcons(Effects effect)
{
DirectoryInfo dir = new DirectoryInfo(HttpContext.Current.Server.MapPath(@"~\Icons\Original\"));
FileInfo[] ff = dir.GetFiles();
string mappath = HttpContext.Current.Server.MapPath(@"~\Icons\");
List<string> paths = new List<string>();
string ids = GetAllEffectIds(effect.TinyUrlCode);
Parallel.ForEach(ff, item =>
{
if (!File.Exists(mappath + @"Generated\" + ids + "-" + item.Name))
{
paths.Add(mappath + @"Generated\" + ids + "-" + item.Name);
ApplyEffects f = new ApplyEffects(effect, item.Name, mappath);
f.SaveIcon();
}
});
//Zip icons!
ZipFiles(paths, effect.TinyUrlCode, ids, effect.General.Prefix);
}