【C#】非同期時にリスト操作をすると起こるエラー「invalidoperationexception collection was modified enumeration operation may not execute.」の対処法

目次

原因

「invalidoperationexception: collection was modified enumeration; operation may not execute.」は、別スレッドとメインスレッドで同じリストを操作しようとすると起こるエラーです。

解決策

C#には非同期でリストを操作するためのConcurrentBagというリストを非同期操作に対応させたバージョンのリストがあります。基本的には単純に書き換えるだけでエラーがでなくなります。

using System.Collections.Concurrent;が必要です。

1
2
3
4
5
//  非同期操作に対応していないリスト
List<int> TestList = new List<int>

// 非同期に対応したリスト
ConcurrentBag<int> TestList = new ConcurrentBag<int>

【C#】非同期時にリスト操作をすると起こるエラー「invalidoperationexception collection was modified enumeration operation may not execute.」の対処法

https://blog.djima.net/2021/10/22/【C-】非同期時にリスト操作をすると起こるエラー「invalidoperationexception-collection-was-modified-enumeration-operation-may-not-execute-」の対処法/

Author

Daiki Iijima

Posted on

2021-10-22

Updated on

2024-04-17

Licensed under