Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: begin thread und syncronize?

  Alt 3. Nov 2005, 23:00
und hier mal ein kleines Beispiel wo man genau sieht das der Thread wartet:
Delphi-Quellcode:
type
  [...]
  procedure FMsgProc(var AMsg: TMessage); message wm_user + 1;
  [...]
  
function GThreadFunc(p: Pointer): Integer;
begin
  SendMessage(Cardinal(p), wm_User + 1, 0, 0);
  MessageBox(0, 'text aus thread', '', 0);
end;

procedure TForm1.FMsgProc(var AMsg: TMessage);
begin
  MessageBox(0, 'text aus hauptthread', '', 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
var LID: Cardinal;
begin
  BeginThread(nil, 0, @GThreadFunc, Pointer(Handle), 0, LID);
end;
Bei diesem Beispiel wird beim Klick auf einen Button der Thread gestartet. In dem Thread wird dann ein SendMessage an den haupttread gemacht und erst nach diesem SendMessage gibt der Thread etwas aus. Man sieht bei dem Beispiel also das erst die Message "text aus haupttread" kommt und erst wenn man dort auf "ok" klickt und somit das Sendmessage zurück kehrt dann der text "text aus thread" kommt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat