0

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());
    }

}

私は何が間違っているのですか?

ありがとうございました !

4

1 に答える 1

3

これは、foreachブロック内に含まれていないコードに関係している可能性が最も高いです-見逃したコードで何をしていますか?画面コレクションを変更(追加または削除)する場合、これにより、表示された例外が発生します。

于 2012-05-20T16:41:45.137 に答える