インターネット上のどこかで、いくつかの型のコレクションを列挙しながら置き換えることが可能であることが確認されています。
以下のテストで確認できます。C#列挙中にコレクションを置き換えます。
// This test confirmed insufficient by comments
var a = new List<int> { 1, 2, 3 };
Parallel.For(1, 10000, i => {
foreach (var x in a)
Console.WriteLine(i + x);
});
Parallel.For(1, 10000, i => a = new List<int> { 1, 2, 3, 4 });
しかし私は非常に私は私のコードでそれを実装を開始する前に、いくつかの公式ドキュメントや、この事実に関連するいくつかの具体的な言及を読みたいです。
誰かがこれを確認/リンクを投稿できますか?
2つのParallel.Forが順番に実行されます。 Parallel.Forは、すべての反復が完了したときに終了します。だからあなたはそれを列挙しながらコレクションを置き換えていません。 – NineBerry
テスト中に置き換えられている間、コレクションは反復されていません。 Parrallel.Forは1から1000の反復を並行して実行し、999の反復がすべて完了した場合にのみ返します。 foreachはあなたが "List a"を反復している間にあなたを完全に憎むでしょう。 –
prof1990