Also die Debugger check routine brauch ich, da ich beim freigeben des threads nen event setze, mit dem der timer benachrichtigt wird, dass der thread ordnungsgemäß durchgelaufen wird. wenn jetzt aber das ganze debuggt wird, dann sollte das timeout nicht zu kurz sein, da sonst eine
exception geschmissen wird, wenn man auch durch den timer debuggt
Delphi-Quellcode:
destructor TDLLTimer.Destroy;
begin
{$IFDEF MSWINDOWS}
Classes.DeallocateHWnd(FHandle);
{$ENDIF}
{$IFDEF LINUX}
WinUtils.DeallocateHWnd(FHandle);
{$ENDIF}
FTimer.OnTerminate :=
nil;
ResetEvent(FExitEvent);
SetEvent(FTimer.CloseEvent);
// --> sage dem thread: HÖRE AUF!
case WaitForSingleObject(FExitEvent, CTI_EXITTIMEOUT)
of // wenn im debug mode, dann CTI_EXITTIMEOUT := INFINITE
WAIT_OBJECT_0: FTimer :=
nil;
WAIT_TIMEOUT :
raise Exception.Create('
Error releasing DLLTimer');
end;
inherited;
end;
und den
API Timer nehme ich deswegen nicht, weil der in
DLL's mitunter nicht läuft (verschiedene Application-Objekte), da hier WindowsBotschaften an das jeweilge MainThread geschickt werden
edit: huch, ich denke mit einem
API Timer in einem Thread sollte es auch funktionieren...