디버거에서 코드 줄을 실행할 때 "동결"합니다 : lock (myvar)
분명히 다른 사람이 myvar
을 보유하고 있습니다. 그러나 나는이 줄에서 myvar
을 무료로 여길 것으로 기대한다. 그래서 코드의 어느 부분이 myvar
(다른 스레드에서 diffenetely)을 보유하고 있는지 알고 싶습니다. 어떻게해야합니까? 내가 (다른 스레드가 하나 밖에 없기 때문에) 어느 스레드가 그것을 보유하고 있는지는 알지만 어디서부터인지 모른다.문제를 해결하는 방법 : 왜 잠금을 얻을 수 없습니까?
UPD 해결, 나는 lock()
문 잠금 스레드 쿼리 지원하지 않습니다 Monitor
클래스를 사용 Monitor.Exit(myvar)
Monitor.TryEnter(myvar)
에 볼 수 ?? –
@AndrewBarber 다른 잠금 문은 하나 뿐이며 잠금 유지 방법을 이해할 수 없습니다. 그래서 나는 문제가 있음을 디버거에서 확인하고 싶다 .... 나는 Console.Writeln ("get lock")과 Console.Writeln ("release lock") 추적을 추가하기로 결정했다. ... – javapowered
그 콘솔. Writeline()는 꽤 비싸고 타이밍을 바꿀 수 있습니다. –