我刚开始用 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());
}
}
我究竟做错了什么?
谢谢 !