Du musst lediglich ein Objekt angeben, das für die Identifizierung der Sperre verwendet wird. Da es hier um Zugriffe auf eine Liste geht, bietet es sich an, diese auch zu verwenden.
Delphi-Quellcode:
TMonitor.Enter(MyList);
try
MyList.Add(42);
finally
TMonitor.Exit(MyList);
end;
Entsprechend mit Angabe des Starts und Endes des Blocks funktionieren auch die andere Varianten wie z.B. TLightweightMREW:
Delphi-Quellcode:
var
Lock: TLightweightMREW;
Test: Integer;
begin
Lock.BeginWrite; // Schreibzugriff anfordern
try
MyList.Add(42);
finally
Lock.EndWrite;
end;
Lock.BeginRead; // Lesezugriff anfordern
try
Test := MyList[0];
finally
Lock.EndRead;
end;
Wichtig ist try..finally, um sicherzustellen, dass auch bei einem Fehler die Sperre wieder aufgehoben wird.