2012-05-20 5 views
0

방금 ​​C#에서 프로그래밍을 시작했고 작은 문제가 발생했습니다. 잠금이 작동하지 않는 것 같아서 "열거 자의 인스턴스가 "예외입니다.호출 된 메서드에서 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()); 
    } 

} 

?

감사합니다.

+5

'foreach'에서 무엇을하고 있습니까? 그리고 왜'screen'을 반복하고'myObjects'를 반복하지 않는다면 그 섹션을 보여줄 수 있을까요? – Oded

+2

더 많은 코드를 표시하십시오. 당신은 아마 루프 내에서'InvokedMethod'를 호출하고 있습니까? –

+1

비어있는 foreach로 시도하거나 foreach의 콘솔에 무언가를 인쇄하십시오 – kravemir

답변

3

이것은 foreach 블록 안에 포함되지 않은 코드와 가장 관련이 있습니다. 코드에서 빠진 내용은 무엇입니까? 화면 컬렉션을 수정 (추가 또는 제거)하면 예외가 표시됩니다.

관련 문제