hallo,
ich habe bereits im forum gesucht (auch etwas "ungefähres" gefunden) aber nicht das richtige.
ich versuche gerade eine art "überwachungsprozedur" zu schreiben. diese prüft die uhrzeit und guckt ob diese einen entsprechenden wert in der zukunft bereits erreicht hat.
hiermier starte ich meinen thread:
Delphi-Quellcode:
type
TMyThread = procedure;
var
ThreadHandle: THandle;
procedure TForm1.StartThread(Thread: TMyThread);
var
ThreadID: DWORD;
begin
ThreadHandle := BeginThread(nil, 0, TFNThreadStartRoutine(@Thread), nil, CREATE_SUSPENDED, ThreadID);
if ThreadHandle <> 0 then
begin
SetPriorityClass(GetCurrentProcess, IDLE_PRIORITY_CLASS);
SetThreadPriority(ThreadHandle, THREAD_PRIORITY_IDLE);
ResumeThread(ThreadHandle);
end;
end;
und meine überwachungsprozedur sieht so aus (ich verwende gewiss kein TThread!)
Delphi-Quellcode:
procedure watcher(iNextRun: LongInt);
var
bTerminated: Boolean;
begin
bTerminated := False;
while not bTerminated do
begin
if DateTimeToUnix(now) = iNextRun then
bTerminated := True;
end;
refreshListView;
// hier ist der thread nun am ende!
// aber auch durch aufruf von "StartThread" in der prozedur "refreshListView" wird kein neuer thread gestartet
end;
procedure watcherA;
begin
// iNextRunA ist ein Integer, hat nichts zu bedeuten
watcher(iNextRunA);
end;
in der prozedur "refreshListView" steht u.a. folgendes:
Delphi-Quellcode:
iNextRunA := 123; // hier wird eigentlich ein timestamp, welcher sich in der zukunft befindet, übergeben
StartThread(watcherA);
warum funktioniert das nicht?