Ich teste gerade ein bisschen mit PostThreadMessage und PeekMessage herum.
Das Ergebnis von PostThreadMessage ist komischerweise immer false, obwohl der Thread existiert den ich anpeile.
Mein Aufruf sieht so aus:
Delphi-Quellcode:
type
TThreadMessages =
packed record
const
THREAD_UPDATE_UI = 1;
// ....
// ...
end;
var
aThreadMessages: TThreadMessages;
// Arbeiterthread ruft auf ...
PostThreadMessage(GUIThread.ThreadID, aThreadMessages.THREAD_UPDATE_UI, 0, 0);
// immer false
// GUI-Thread fragt ab ...
var
MessageData: TMsg;
if (PeekMessage(MessageData, 0, 0, 0, PM_REMOVE))
then
if MessageData.
message = aThreadMessages.THREAD_UPDATE_UI
then
// ...
Die Fehlermeldung lautet "ungültiger Threadbezeichner"
Edith
ein Aufruf von
PeekMessage(MessageData, 0, 0, 0, PM_NOREMOVE);
ganz am Anfang im Thread hat für Abhilfe gesorgt.
Nur ist das jetzt alles OK so?