Monitor.Enter
Monitor.Exit
同じスレッドから呼び出されるように設計されています。しかし、取得したスレッドとは別のスレッドでロックを解放する必要がある場合はどうすればよいでしょうか?
例: 共有リソースと、このリソースを使用する非同期操作があります。操作はBeginOperation
、共有リソースのロックを開始して取得します。EndOperation
ロックを解除する方法もあります。EndOperation
通常、コールバックから別のスレッドで呼び出さMonitor.Exit
れるため、EndOperation
メソッドで呼び出すことはできません。この場合の最善のアプローチは何ですか?良い解決策ではAutoResetEvent
なく、 でロックを再確認しますか?Monitor