![]() |
Daten aus Thread an Anwendung übergeben
Moin !
Ich habe da gerade folgendes Konstrukt:
Delphi-Quellcode:
Das ist ein Teil der Pipe Demo von hier:
procedure TPipeServer.Execute;
var I, Written: Cardinal; InMsg, OutMsg: RPIPEMessage; begin while not Terminated do begin if FHandle = INVALID_HANDLE_VALUE then begin // suspend thread for 250 milliseconds and try again Sleep(250); end else begin if ConnectNamedPipe(FHandle, nil) then try // read data from pipe InMsg.Size := SizeOf(InMsg); ReadFile(FHandle, InMsg, InMsg.Size, InMsg.Size, nil); if (InMsg.Kind = 0) and (StrPas(InMsg.Data) = cShutDownMsg + FPipeName) then begin // process shut down OutMsg.Kind := 0; OutMsg.Count := 3; OutMsg.Data := 'OK'#0; Terminate; end else begin // data send to pipe should be processed here OutMsg := InMsg; // we'll just reverse the data sent, byte-by-byte Data := InMsg.Data; MainForm.ProcessCommand(Data); //for I := 0 to Pred(InMsg.Count) do // OutMsg.Data[Pred(InMsg.Count) - I] := InMsg.Data[I]; OutMsg.Data := 'OK'; end; CalcMsgSize(OutMsg); WriteFile(FHandle, OutMsg, OutMsg.Size, Written, nil); finally DisconnectNamedPipe(FHandle); end; end; end; end; ![]() Das funzt auch alles ganz prächtig und auch die Pipe klappt. Aber wie kriege ich jetzt die Daten die ich per Pipe gesendet habe in meine Hauptanwendung? Im Code gibt es die Stelle "Data := InMsg.Data;". Data ist mal nur ein String. So ich steck da aber noch mitten in dem Thread drin. Wenn ich nun die Daten an meine Hauptanwendung übergeben lasse (mittels MainForm.ProcessCommand(Data); ) und dort z.B. versuche ein MDI Child zu erzeugen, dann hängt die Anwendung. Hintergrund: Ich will über die Pipe Commands senden können welche dann in der Hauptanwendung bestimmte Reaktionen hervorufen. Kann mir jemand nen Tip geben wie ich nun die Daten aus dem Thread in meine Hauptanwendung bekomme und die dort verarbeiten kann? |
Re: Daten aus Thread an Anwendung übergeben
|
Re: Daten aus Thread an Anwendung übergeben
Danke nun tut das so wie ich es haben wollte.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz