我想我遗漏了一些关于 Monitor.Enter
和 Monitor.TryEnter
正确行为的信息。这是我编写的一段代码,用于将问题与其余代码分开:
object lockObj = new object();
bool result = Monitor.TryEnter(lockObj);
Console.Write(result);
结果始终为 true
。这里没有惊喜。
object lockObj = new object();
Monitor.Enter(lockObj);
bool result = Monitor.TryEnter(lockObj);
Console.Write(result);
但这一次也是true
。那么 lockObj
在 Monitor.Enter
之后是否被锁定?请给我一些新的看法。
最佳答案
这是因为您在同一个线程中执行此操作。
还要记住 ( MSDN ):
It is legal for the same thread to invoke Enter more than once without it blocking; however, an equal number of Exit calls must be invoked before other threads waiting on the object will unblock
关于c# - Monitor.TryEnter 始终返回 true,即使在 Monitor.Enter 之后也是如此,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11154401/