Monitor.TryEnter总是甚至只是Monitor.Enter后返回true(Monitor

2019-09-18 09:19发布

我想我失去了一些东西有关的正确行为Monitor.EnterMonitor.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或不? 请给我一些新鲜的看看这个。

Answer 1:

这是因为你在同一个线程这样做。

也请记住,( MSDN ):

它是合法的,在同一个线程调用输入不止一次没有它阻塞; 然而,退出调用相同数目的必须在其他线程等待的对象将解除之前被调用



Answer 2:

一个已经获得了监视同一线程总是允许reaquire它(以允许重新enterant代码)。



文章来源: Monitor.TryEnter always returns true even just after Monitor.Enter