Hi,
ich hab schon mal gleiches Problem bearbeitet und folgenden Lösungsansatz gewählt.
Mein Thread beinhaltet ein Property vom Typ TNitifyEvent. Beim Terminieren des Threads rufe ich dieses Ereignis auf und meine Hauptanwendung bekommt die entsprechende Mitteilung. Ob dann ein Counter oder etwas anderes bearbeitet wird bleibt Dir überlassen.
Delphi-Quellcode:
type
TMapThread = class(TThread)
private
{ Private-Deklarationen }
FIsSetObj : Boolean;
FIsSetCon : Boolean;
FOnFinish : TNotifyEvent;
protected
procedure ExecuTMapte; override;
public
property IsSetObject : Boolean read FIsSetObj write FIsSetObj;
property IsSetCon : Boolean read FIsSetCon write FIsSetCon;
property OnFinish : TNotifyEvent read FOnFinish write FOnFinish;
Wenn der Thread beendet wird rufe ich das Ereignis auf
If Assigned(FOnFinish) then FOnFinish(self);
In der Hauptanwendung wird nach dem Creieren des Thread die Ereignis-Procedure zugewiesen und in dieser entsprechend reagiert.
MyThread := TMapThread.Create(True);
OnFinish := OnThreadFinish;
TMain.OnThreadFinish(Sender : TObject);
begin
dec(mein_globaler_Threadcounter);
end;
[delphi]