Thema: Delphi timer in thread?

Einzelnen Beitrag anzeigen

iphi

Registriert seit: 13. Feb 2009
262 Beiträge
 
Delphi 7 Personal
 
#1

timer in thread?

  Alt 8. Nov 2009, 20:06
Hallo,

ich habe ein Threadobjekt TCapture, welches Daten von einer Soundkarte aufnimmt.
Das ganze funktioniert über Windows Messages, die der Thread.Execute weiterleitet:

Delphi-Quellcode:
procedure TCapture.Execute;
var msg:Tmsg;
begin
  Fwnd:=allocatehwnd(WndProc); //hier ist jetzt dein Windowhandle für MMAudio
  try
    if StartCapture then
      while getMessage(msg,0,0,0) do //warten auf Message
        DispatchMessage(msg) //verteilen auf das entsprechende Fenster
      else SetFailed(true);
  finally
    logging:=false;
    LogStop;
    LogClose;
    Deallocatehwnd(Fwnd);
  end;
end;
So weit so gut. Jetzt folgende Zusatzaufgabe für den Thread:
Er soll einigermaßen genau t Millisekunden nach dem Aufruf StartCapture einmalig eine Procedure aufrufen.
Wie mache ich das am geschicktesten?
Bisher habe ich das außerhalb des Threads gemacht, ist aber bei CPU Lastschwankungen zu unzuverlässig, daher muss das in den Hochprioritätsthread mit hinein.

Kann ich innerhalb des Threads ein Timerobjekt erzeugen, welches mit derselben Prio läuft wie der Thread? Oder baue ich besser die getMessage-Schleife auf peekMessage um und frage regelmäßig die Tickcounts ab und wenn ja, wie würde das mit peekMessage konkret aussehen?

Danke, Thomas
  Mit Zitat antworten Zitat