1
AFAIK,這兩個版本的lock
之間有區別。Lock in Framework 3.5 vs 4.0?
框架4增加了一個檢查是否有監視器中的異常輸入(如內存溢出異常)
而且還有一個lockTaken
標誌,它指示是否鎖定應被釋放(在finally
子句)或不是(由於try
子句中的失敗代碼)。
喜歡的東西
bool lockTaken = false;
try
{
Monitor.Enter (lockObj, ref lockTaken);
...
}
finally { if (lockTaken) Monitor.Exit (lockObj); }
(非常類似於using
代碼(配置...))
但觀看由relfector我看到完全不同的東西:
[SecuritySafeCritical]
public static void Enter(object obj, ref bool lockTaken)
{
if (lockTaken)
{
throw new ArgumentException(Environment.GetResourceString("Argument_MustBeFalse"), "lockTaken");
}
ReliableEnter(obj, ref lockTaken);
}
哪裏是嘗試的模式,最後?
我錯過了什麼?
在第一個片段,你正在尋找的方法調用,在第二在所謂的方法的實施。 – dtb
@dtb這是c#4.0如何翻譯鎖定語句(編輯標題)。 –