我有一種情況,即ReadWriterLockSlim引發異常「System.Threading.SynchronizationLockException - 寫入鎖定正在釋放而不被保留。」當我嘗試執行ExitWriteLock()時。據我所知,這不應該發生,因爲進入try塊的後續線程將'阻塞',直到他們可以獲得鎖。我在這裏錯過了什麼嗎?寫入鎖定被釋放而不被保留
該問題看起來與this one非常相似,但沒有解決方案發布在那裏。
//Code simplified for example.
public class i18nService {
internal static ReaderWriterLockSlim cacheLock = new ReaderWriterLockSlim(LockRecursionPolicy.NoRecursion);
private string ProcessText()
{
try {
cacheLock.EnterWriteLock();
return "xyz";
}
finally {
cacheLock.ExitWriteLock(); // Error is throwing here.
}
}
}
非常感謝您的幫助:-)
G'day Brendan。感謝您的迴應。我其實也有類似的想法,但我不確定是這樣。 from http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlockslim.enterwritelock.aspx 「此方法阻塞,直到調用線程進入鎖定,因此可能永遠不會返回。使用TryEnterWriteLock方法阻塞指定的時間間隔,然後在該時間間隔內調用線程未進入寫入模式時返回。「 然而,正如你所指出的那樣,我不允許在EnterWriteLock()上發生異常......嗯......讓我再玩一次。 –