Serviceを読んで理解し、同意したものとみなします。8,009件2下記コードのForEachを使った処理で1~4の処理中にDownLoadDataListのカウントが変化すると次のMoveNextでエラーになるのでしょうか?ループが1週した後に、ForEachまで来ると下記のエラーがでます。4処理・・・・・・}DownLoadDataListはList<DownLoadData>で定義されています。.Netは2.0です。票2仕様上、foreachの処理中にコレクションに追加・削除が発生すると、InvalidOperationExceptionが発生します。正確には、GetEnumeratorメソッドがそのように実装されています。これを回避する方法は、いくつかあります。代表的なのが追加、削除、foreachなどの操作を行うとき、コレクション全体をlockする手法です。デッドロックを引き起こす可能性があります。lockの管理(排他制御)は、細心の注意を払わなければなりません。第二の方法としてSystem.Collections.Concurrent名前空間にあるコレクションを使用する手法です。Concurrentなコレクションは、lock不要なコレクションです。コレクションをforeachすると、そのコレクションのスナップショットを使用してforeachが行われます。そのため、追加、削除が発生し、コレクションが変更されても、例外を発生しません。Concurrent系のコレクションは、インデクサによるアクセスができません。第三の方法として、nugetから追加が必要となりますが、System.Collections.Immutable名前空間のコレクションを使用する手法です。追加、削除などの操作は、新しいコレクションに反映され、元のコレクションに影響を与えません。コレクション全体を複製するため、頻繁な変更が発生するとパフォーマンスに影響を与えることがあります。|5仕様通りの動作です。リストのバージョンが変わるとそれ以前にList<T>.GetEnumerator()の返したIEnumeratorは無効になります。要件に合わせてList<T>.ToArray()やEnumerable.ToList()でリストを複製するようにしてください。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。