Thema: NonVCLTimer

Einzelnen Beitrag anzeigen

snook

Registriert seit: 25. Jun 2010
94 Beiträge
 
Delphi 2005 Professional
 
#3

AW: NonVCLTimer

  Alt 2. Sep 2011, 16:47
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...

Geändert von snook ( 2. Sep 2011 um 19:29 Uhr)
  Mit Zitat antworten Zitat