Die MeinForm schickt es so:
Delphi-Quellcode:
function TFormClient.SendMessageToThread(const Command : Byte) : Boolean;
begin
if Assigned(ThreadTCPClient) then
begin
if ThreadTCPClient.ThreadID <> 0 then
Result := PostThreadMessage(ThreadTCPClient.ThreadID, SendCommandToServer, 0,Command)
end;
end;
Der Thread empfängt sie dann so:
Delphi-Quellcode:
MyIdTCPClient := TIdTCPClient.Create(nil);
while not Terminated do
begin
if MyIdTCPClient.Connected then begin
Sleep(1);
//check first if message got received from mainform:
Peekmessage(Msg, 0, 0, 0, PM_REMOVE);
case Msg.message of
SendCommandToServer : begin
Msg.message := 0;
end; //SendCommandToServer : begin
end; //case Msg.message of
if not MyIdTCPClient.IOHandler.InputBufferIsEmpty then
begin
//schau was im Inputpuffer vom Client ist
end;
end
else begin
MyIdTCPClient.Connect;
if MyIdTCPClient.Connected then
fServerConnectionStatus := Connected;
end;
So geht es, aber wenn ich das Msg.message := 0; rausnehme dann bekomme ich die Meldung 2 mal.