コレクションが変更されたため、列挙操作が実行できない場合がある Error
2022-02-25 21:21:08
C#がエラーを報告する。Collection was modified; enumeration operation may not execute [resolved].
この例外は、Listのトラバーサル中に、他の場所でListに変更(追加、削除、変更)が行われたために、InvalidOperationExceptionが発生することが多いようです。
これは主に、複数のスレッドが同じListに対して操作を行った場合に発生します。この問題を回避するには、次の例のように、操作にロックを追加し、ロックを取得したときだけ対応する操作を実行するようにします。
public class LockListInMultThread
{
private List<string> chains = new List
();
private object lockobj = new object();
public void ReadAndDoXxx()
{
lock(lockobj)
{
chains.ForEach(s =>
{
// todo ....
Console.Out.WriteLine("=> " + s);
});
}
}
// may be called in a different thread
public void AddNew(string s)
{
lock (lockobj)
{
// other modifications
chains.Add(s);
}
}
}
プロテストあり。
もし役に立ったと思ったら、後ろの学生のために、いいね!やコメントをお願いします。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例