Looking for c# Keywords? Try Ask4Keywords

C# LanguageLock-Anweisung


Syntax

  • sperren (obj) {}

Bemerkungen

Mit der lock Anweisung können Sie den Zugriff verschiedener Threads auf Code innerhalb des Codeblocks steuern. Sie wird normalerweise verwendet, um Race-Bedingungen zu verhindern, z. B. mehrere Threads, die Elemente aus einer Sammlung lesen und entfernen. Da das Sperren dazu führt, dass Threads warten, bis andere Threads einen Codeblock verlassen, kann dies zu Verzögerungen führen, die mit anderen Synchronisationsmethoden behoben werden könnten.

MSDN

Das Schlüsselwort lock kennzeichnet einen Anweisungsblock als einen kritischen Abschnitt, indem die gegenseitige Ausschlusssperre für ein bestimmtes Objekt abgerufen, eine Anweisung ausgeführt und dann die Sperre freigegeben wird.

Das Schlüsselwort lock stellt sicher, dass ein Thread keinen kritischen Codeabschnitt eingibt, während sich ein anderer Thread im kritischen Abschnitt befindet. Wenn ein anderer Thread versucht, einen gesperrten Code einzugeben, wartet er, blockiert, bis das Objekt freigegeben wird.

Es empfiehlt sich, ein privates Objekt zum Sperren oder eine private statische Objektvariable zu definieren, um Daten zu schützen, die in allen Instanzen gemeinsam sind.


In C # 5.0 und höher entspricht die lock :

bool lockTaken = false;
try 
{
    System.Threading.Monitor.Enter(refObject, ref lockTaken);
    // code 
}
finally 
{
    if (lockTaken)
        System.Threading.Monitor.Exit(refObject);
}

Für C # 4.0 und früher entspricht die lock :

System.Threading.Monitor.Enter(refObject);
try 
{
    // code
}
finally 
{
     System.Threading.Monitor.Exit(refObject);
}

Lock-Anweisung Verwandte Beispiele