Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by SirThornberry,
3. Nov 2005
der Weg ist schon sinnvoll. Die Syncronize Methode macht ja auch nix anderes als dafür zu sorgen das der Thread nicht weiter läuft während im Hauptthread etwas abgearbeitet wird. Und mit dem SendMessage ereichtst du genau das, der Thread macht nix bevor du nicht aus diesem messagehandler zurück kehrst. Und da der Thread nix macht, also auf keine Variablen etc. zugreift kann auch nix schief gehen.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by SirThornberry,
3. Nov 2005
und hier mal ein kleines Beispiel wo man genau sieht das der Thread wartet:
type
procedure FMsgProc(var AMsg: TMessage); message wm_user + 1;
function GThreadFunc(p: Pointer): Integer;
begin
SendMessage(Cardinal(p), wm_User + 1, 0, 0);
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by SirThornberry,
3. Nov 2005
Wenn du aus dem Thread mit SendMessage etwas an den hauptthread sendest wird auch eine Syncronisation durchgeführt weil ja die Message letztendlich über die Nachrichtenschleife des hauptthreads kommt und der Thread wartet auf das Result von dieser Message. In dem Fall sollten also Thread und Hauptthread syncron sein. Sende also aus deinem Thread eine Message mit SendMessage an ein Fenster aus dem...