我认为我遗漏了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
被锁定了吗?请给我一些新的看法。
答案 0 :(得分:7)
答案 1 :(得分:0)
已经获得监视器的同一个线程总是允许重新获取它(以允许重入代码)。