クラスの新しいインスタンスを作成し、画像を操作してディスクに保存する並列 foreach 関数があります...
ただし、400 回のうち約 4 回、画像はディスクに保存されますが、操作されていない場合、私の理論では、それが発生した場合、クラスに存在するプロパティの一部はサポートされていない場合に null になります...
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);
}