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ブレンダン。応答していただきありがとうございます。私は実際に同様の行に沿って考えましたが、それが正しいかどうかはわかりません。 from http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlockslim.enterwritelock.aspx "このメソッドは、呼び出し元のスレッドがロックに入るまでブロックされないため、返されることはありません。TryEnterWriteLockメソッドを使用します指定された間隔でブロックし、呼び出し中のスレッドがその間隔の間に書込みモードに入っていない場合は戻る。 しかし、あなたが指摘しているように、私はEnterWriteLock()の例外を許可していません... ...うーん...もう少しそれを試してみましょう。 –