![]() |
Modales Formular in einem Thread
Mahlzeit!
Ich habe eine Anwendung, die Daten über eine RS232-Schnittstelle bekommt - und zwar ziemlich sporadisch. Bisher habe ich für die Schnittstelle ein Formular, welches ich von der Anwendung aus aufrufe:
Delphi-Quellcode:
Nun wäre es aber ganz schön, wenn ich das Formular einfach als zweites Programm hätte, damit ich in der Anwendung mit anderen Dingen weiterarbeiten kann. Da ich aber einige Daten der Anwendung (lesenderweise) brauche, habe ich an einen Thread gedacht. Dementsprechend habe ich ein Thread definiert und erzeuge beim Menuclick den Thread - und rufe im Thread das Formular auf.
procedure TFormMain.MenuProtoOmegaClick(Sender: TObject);
begin Application.CreateForm(TFormOmegaConnect,FormOmegaConnect); FormOmegaConnect.ShowModal; FormOmegaConnect.Release; end;
Delphi-Quellcode:
Irgendwie funzt das aber nicht. Das Fenster kommt nicht und wenn ich dann die Anwendung schließe bekomme ich Fehlermeldungen ohne Ende.
procedure TFormMain.MenuProtoOmegaClick(Sender: TObject);
begin Thread:=TElektronikThread.Create(TRUE); Thread.Priority:=tpHIGHER; Thread.FreeOnTerminate:=TRUE; Thread.Resume; end; procedure TElektronikThread.Execute; begin Application.CreateForm(TFormOmegaConnect,FormOmegaConnect); FormOmegaConnect.ShowModal; FormOmegaConnect.Release; end; Jemand eine Idee, woran es liegt? Gruss Bjoern alias easywk |
Re: Modales Formular in einem Thread
Die Borland-VCL ist nicht Thread-Save. :cry:
D.h. alle Formulare müssen im Kontext des Primären Threads laufen. Alles andere Kracht! Das einzige wäre, wenn Du zwar die Komponenten (mit Wrapper für Eventbehandlung) in den Thread legen würdest. Die Kommunikation mit dem Formular würde dann z.B. über Windows-Messages erfolgen können. |
Re: Modales Formular in einem Thread
Zitat:
Ich denke mal, dass nur die Komponenten im Thread liegen macht wenig Sinn und das Ganze unnötig kompliziert. Vielleicht fällt mir ja noch ne andere Lösung ein, sonst muss es halt so bleiben, wie es momentan ist ... Thanx for help |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:03 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 by Thomas Breitkreuz