在调试器中,当执行这样的代码行时,我“冻结”了:lock (myvar)
显然其他人正在持有myvar
. 但是我希望在这条线上myvar
应该是免费的。所以我想知道代码的哪一部分myvar
(来自另一个线程)。我怎样才能做到这一点?我知道哪个线程持有它(因为我只有另一个线程),但我不知道在哪里。
upd解决了,我忘记打电话Monitor.Exit(myvar)
了Monitor.TryEnter(myvar)
在调试器中,当执行这样的代码行时,我“冻结”了:lock (myvar)
显然其他人正在持有myvar
. 但是我希望在这条线上myvar
应该是免费的。所以我想知道代码的哪一部分myvar
(来自另一个线程)。我怎样才能做到这一点?我知道哪个线程持有它(因为我只有另一个线程),但我不知道在哪里。
upd解决了,我忘记打电话Monitor.Exit(myvar)
了Monitor.TryEnter(myvar)
如果您正在使用Visual Studio 2010
,您可以查看Parallel Stacks
该lock()
语句使用Monitor
不支持查询锁定线程的类。
在 Fx 4.5 中,您可以检查Monitor.IsEntered(myVar)
但仅此而已。
其余的应该来自您的代码逻辑。