Pas*_*cal 1 c# action list thread-safety
可能重复:
收集已修改; 枚举操作可能无法执行
我有一个通用列表,我在枚举时执行一些操作.
foreach(Action<string> action in actionList)
{
if(action != null) {
action(mystring);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我得到这个例外:
InvalidOperationException:
Collection was modified; enumeration operation may not execute
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题,我紧紧抓住.NET 3.5:/
好吧,其中一个动作会修改actionList,使迭代器无效.避免错误的最简单方法是首先获取列表的副本,例如
foreach(Action<string> action in actionList.ToList())
{
if(action != null) {
action(mystring);
}
}
Run Code Online (Sandbox Code Playgroud)
甚至:
foreach (var action in actionList.Where(action => action != null).ToList())
{
action(mystring);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1102 次 |
| 最近记录: |