Im Prinzip ist TMonitor die umgedrehte Implementation für mehrere TCriticalSection.
Du kannst in ein anderes Object eine CriticalSection rein tun und diese verwenden
Delphi-Quellcode:
TMyObject = class
Lock: TCriticalSecition;
end;
MyObj.Lock.Enter
oder du nutzt das "versteckte" Feld in allen TObject, welches man über TMonitor ansprechen kann.
Delphi-Quellcode:
TMyObject = class
end;
TMonitor.Enter(MyObj); // macht dann intern quasi sowas wie ein MyObj.geheimesproperty.Enter;
// und vorher noch ein IF NOT Assigned(MyObj.geheimesproperty) THEN MyObj.geheimesproperty := TCriticalSectionÄhnlichesDing.Create;
Nur den Namen "Monitor" fand ich schon immer ein bissl "irreführend".