我刚开始用C#编程,我偶然发现了一个小问题 - 锁似乎无法正常工作,我得到一个“集合在枚举器后被修改了被实例化。“例外。
我的代码基本上是这样的:
private static object myLock = new object();
private Stack<MyObject> myObjects;
....
// Method that throws an exception
public void Update()
{
lock(myLock)
{
foreach (MyObject ob in myObjects)
{
ob.Update(); // has a foreach loop of it's own
}
}
}
// Method invoked by a click event
public void InvokedMethod()
{
lock(myLock)
{
myObjects.Push(new MyObject());
}
}
我做错了什么?
谢谢!
答案 0 :(得分:3)
这最有可能与你没有包含在foreach块中的代码有关 - 你在错过的代码中做了什么?如果您正在修改屏幕集合(添加或删除),这将导致您看到的异常。