Zitat von
igel457:
Zitat:
TAuSyncMgr.Create - der Vorfahre wird besser zuerst initialisiert
Da stimme ich dir zu - jedoch bin ich mir nie sicher, wenn ich eine Klasse von TThread ableite, ob der Thread nicht schon direkt im "inherited Create(false)" gestartet wird. Ich war aber auch zu faul um nachzuschauen, also habe ich es einfach so gemacht
Aua.
Kennst Du die Taste 'F1'?
Zitat von
Die Delphi-Hilfe zu TThread.Create:
Mit Create erzeugen Sie einen Thread in einer Anwendung. Wenn CreateSuspended den Wert false hat, wird Execute sofort aufgerufen. Andernfalls erfolgt der Aufruf erst nach einem Aufruf von Resume.
Und so macht man das dann:
Delphi-Quellcode:
constructor TAuSyncMgr.Create;
begin
inherited Create(True); // <--- Der Parameter heißt 'CreateSuspended'
FCallList := TList.Create;
FCritSect := TAcCriticalSection.Create;
Resume; // <--- Aufwecken, geht auch später
end;
Weiterhin würde ich den Thread nicht ständig im Kreis rennen lassen, verwende doch einfach eine Semaphore oder ein Event. im Execute wartest Du auf das Event (WaitForSingleObject), im AuQueueCall zuppelst Du am Event (SetEvent).