Registriert seit: 16. Apr 2007
2.325 Beiträge
Turbo Delphi für Win32
|
Re: Sleep in einem Thread. Application.processmessage
17. Okt 2008, 12:56
Wenn du immer wiederkehrende Aufgaben hast, solltest du diese in einen Timer auslagern. Es ist nämlich überhaupt nicht gesichert, dass GetMessage in annehmbarer Zeit zurückkehrt. Der Code sähe dann in etwa so aus:
Delphi-Quellcode:
procedure TThreadClient.OnTimer;
begin
if fClient.Active then
begin
//... sende daten
end;
//Noch Online?
if not fClient.Active then begin
//... baue verbindung auf
end;
end;
procedure TThreadClient.Execute;
var Msg: TMsg;
begin
fTimer := TTimer.Create( nil);
try
fTimer.Interval := Wuppdi;
fTimer.OnTimer := Self.OnTimer;
fTimer.Enabled := True;
while GetMessage(Msg, 0, 0, 0) do
DispatchMessage(Msg);
finally
fTimer.Free;
end;
end;
procedure TThreadClient.DoTerminate;
begin
PostThreadMessage(ThreadId, WM_QUIT, 0, 0);
end;
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
|