Wenn ich manuell was in die Queue schiebe, dann wird das nicht verworfen.
Sehr verwirrend.
Delphi-Quellcode:
type
THackedTimer = class(TComponent)
private
FInterval: Cardinal;
FWindowHandle: HWND;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
Timer1.Interval := 500;
Timer2.Enabled := False;
end;
procedure TForm2.Timer1Timer(Sender: TObject);
begin
Memo1.Lines.Add('OnTimer');
if THackedTimer(Timer1).FInterval = 0 then ;
PostMessage(THackedTimer(Timer1).FWindowHandle, WM_TIMER, 1, 0);
Sleep(1500);
Memo1.Lines.Add('Disable');
Timer1.Enabled := False;
end;
procedure TForm2.Timer2Timer(Sender: TObject);
begin
//
end;
Ich dachte Windows schiebt die Timer-Events asynchron in die Queue.