【发布时间】:2012-02-09 01:05:55
【问题描述】:
Monitor.Enter 可以抛出任何异常。我正在做代码审查,发现 Monitor.Enter 在 try 块之前。你看到in有什么问题吗?
Monitor.Enter(...)
try
{
...
}
finally
{
Monitor.Exit(..)
}
【问题讨论】:
-
在 try 块中包含 Enter() 是一个错误。当 Enter() 可能失败时,您将调用 Exit()。您只需要对在 Enter() 调用之后、在 进入try 块之前引发的异常感到痛心。这实际上是 x64 抖动中的一个错误:bluebytesoftware.com/blog/2007/01/30/… 也是新 4.0 Monitor.Enter(object, ref bool) 重载背后的动机。
标签: c# multithreading synchronization