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.