我正在寻找一种在C#中获取并发集合或至少支持并发枚举器的集合的方法。现在,当我迭代的集合发生变化时,我得到一个InvalidOperationException异常。我可能只是深拷贝的收集和使用私人拷贝工作,但我不知道是否有可能是一个更好的办法C#中的并发集合
代码片段:
foreach (String s in (List<String>)callingForm.Invoke(callingForm.delegateGetKillStrings))
{
//do some jazz
}
- 编辑 -
我把答案还发现我需要确保写入集合的代码也需要尝试锁定。
private void addKillString(String s)
{
lock (killStrings)
{
killStrings.Add(s);
}
}