【发布时间】:2017-06-29 14:22:17
【问题描述】:
我正在对旧源代码进行故障排除,并遇到这样的声明:
if (Monitor.TryEnter(lockObj))
{
try
{
//does something
if (failing_condition)
{
Monitor.Exit(lockObj);
throw new Exception("Oops!");
}
catch (Exception ex)
{
throw ex;
}
finally
{
Monitor.Exit(lockObj);
}
}
}
代码因System.Threading.SynchronizationLockException: Object synchronization method was called from an unsynchronized block of code. 而崩溃
是否有一种安全的方法可以在失败情况和正常执行完成时调用Monitor.Exit()?
【问题讨论】:
标签: c# multithreading try-catch