C # So erkennen Sie ein Objekt ist bereits gesperrt

Wie kann ich erkennen, ob ein Objekt gesperrt ist oder nicht?

Monitor.TryEnter (wie beschrieben inGibt es eine Möglichkeit zu erkennen, ob ein Objekt gesperrt ist?) funktioniert bei mir nicht, da es das Objekt sperrt, wenn es nicht gesperrt ist.

I nur Ich möchte überprüfen, ob es gesperrt ist und an einer anderen Stelle in meinem Code werde ich das verwendenMonitor Klasse, um das Objekt zu sperren.

Ich weiß, dass es zum Beispiel möglich ist, ein boolesches Feld zu verwenden (zum Beispielprivate bool ObjectIsLocked), aber was kann man anhand des Sperrobjekts selbst erkennen?

Der folgende Beispielcode zeigt, was ich tun möchte:

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);
        }
    }
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage