オブジェクトがロックされているかどうかを検出するにはどうすればよいですか?
Monitor.TryEnter
(オブジェクトがロックされているかどうかを検出する方法はありますか?で説明されているように)ロックされていない場合はオブジェクトがロックされるため、機能しません。
ロックされているかどうかだけを確認したいので、コード内のどこかでMonitor
クラスを使用してオブジェクトをロックします。
たとえばブールフィールド(たとえばprivate bool ObjectIsLocked
)を使用することは可能ですが、lock-object自体を使用してそれを検出する方法はわかっています。
以下のサンプルコードは、私がやりたいことを示しています。
private static object myLockObject = new object();
private void SampleMethod()
{
if(myLockObject /*is not locked*/) // First check without locking it
{
...
// The object will be locked some later in the code
if(!Monitor.TryEnter(myLockObject)) return;
try
{
....
}
catch(){...}
finally
{
Monitor.Exit(myLockObject);
}
}
}