Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#12

Re: Thread execute wird nicht ausgeführt

  Alt 16. Jul 2009, 16:13
Zitat von Apollonius:
Und wer soll die Nachrichten für das Fenster bearbeiten? Das kann nur der Thread tun, der das Fenster erstellt hat. Und er braucht dazu eine Nachrichtenschleife.
Kannst du nicht irgendwas mal hinnehmen? Und wenn nicht dann schau selbst nach. Also nochmals: es spricht ncihts gegen den Timer, er ist nutzbar, auch ohne Fenster. Und da der Herr ja nicht schafft mal seine Behauptungen zu überprüfen sondern statt dessen immer neue aufstellt, hier mal noch ein paar Ausschnitte (c) by Embarcadero:

Delphi-Quellcode:
constructor TTimer.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  [...]
  FWindowHandle := Classes.AllocateHWnd(WndProc);
  [...]
end;

procedure TTimer.WndProc(var Msg: TMessage);
begin
  with Msg do
    if Msg = WM_TIMER then
      try
        Timer;
      except
        Application.HandleException(Self);
      end
    else
      Result := DefWindowProc(FWindowHandle, Msg, wParam, lParam);
end;
Was soll somit das ganze mit dem Thread zu tun haben? Ein Thread hat nicht automatisch eine Nachrichtenschleife geschweige denn ein Fensterhandle um etwas zu empfangen. Statt dessen musst du die WndProc beim anlegen des Fensters angeben, was - wie nun schon oft genug geäussert - vom TTimer geschieht. Was soll nun also der Thread damit zu schaffen haben?

Ich diskutiere hier nicht um den Sinn bzw. Unsinn eines TTimers in einem Thread, da man das in einem Thread besser handhaben kann (WaitMultipleObjects(), etc) sondern nur gegen deine Pauschale Aussage das TTimer hier nicht nutzbar ist, da kein Fenster zur Verfügung steht für selbigen. Und das ist immernoch eine in meinen Augen falsche Aussage deinerseits.

Also entweder überzeugst du dich selbst oder du stellst die nächste Behauptung in den Raum, warum das nicht funktionieren sollte ohne Fenster...
  Mit Zitat antworten Zitat