Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#17

Re: Synchronize und die Messagequeue

  Alt 3. Jan 2010, 08:58
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).
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat