Ich würde ein BusyFlag als Integer spendieren, und mit
Delphi-Quellcode:
function GetBusy : Boolean;
begin
LRes := TInterlocked.Exchange( LThreadFlag, LThreadFlag);
Result := LRes <> 0;
end;
abfragen, sicherheitshalber.
Was Peter schreibt stimmt schon, aber weil die Busy-Abfrage ja nicht permanent läuft würde ich mir da etwas mehr "Freiraum" drumrum schaffen,
damit nicht bei plötzlichen Änderungen des Typs aus Versehen etwas in die Hose geht.
Das mit dem Exhange geht nicht, da es keine Object properties annimmt und da ich mehrere Instanzen des Objects habe, kann ich keine globale variable nehmen.
Im moment mache ich das setzen von aussen mit critical sections, das lesen ohne. Von innen (im thread) wird es nur gelesen, nur beim erzeugen einmal auf False gesetzt.