Autor Beitrag
vreden123
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 2



BeitragVerfasst: Mi 11.05.11 23:39 
Hallo,

ich lasse meine 2. Form (Form2) aus Form1 in einem neuen Thread öffnen, damit Form1 beim ladevorgang von Form2 nicht beeinträchtigt wird.

Jetzt habe ich nur das Problem das sich Form2 direkt wieder schließt, wenn der neue Thread, also das öffnen der 2. Form abgeschlossen ist.
Dies ist ja vom Prinzip her gesehen auch richtig, das sich der Thread beendet wenn er abgeschlossen ist.

Wie kann ich es am besten anstellen, das sich der neue Thread erst beendet, wenn die 2.Form geschlossen bzw. this.Hide(); gemacht wird?

Ich könnte auch mit
System.Threading.Thread.Sleep(zeitwert);
arbeiten aber das zögert das direkte schließen der 2. Form nur herraus.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 12.05.11 05:49 
user profile iconvreden123 hat folgendes geschrieben Zum zitierten Posting springen:
ich lasse meine 2. Form (Form2) aus Form1 in einem neuen Thread öffnen, damit Form1 beim ladevorgang von Form2 nicht beeinträchtigt wird.
Wie meinst du das? Du kannst auf keine Oberfächenelemente aus einem Thread heraus zugreifen. Das muss immer im Kontext des Hauptthreads passieren.

Die Daten hinter einem Formular kannst du natürlich im Thread laden und dann die Ergebnisse aus dem Hauptthread heraus anzeigen.
vreden123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 2



BeitragVerfasst: Do 12.05.11 13:40 
Also ich meine wenn ich in Form1 auf den Button klicke, öffnet sich Form2.
Das öffnen/berechnen von Form2 dauert relativ lange, deswegen, lasse ich es in einem neuen Thread öffnen.
Nur das Problem ist, wenn Form2 komplett berechnet/geöffnet ist, beendet sich der neue Thread und Form2 schließt sich direkt wieder.
Ich müsste das beenden des neuen Thread verhindern.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 12.05.11 13:55 
user profile iconvreden123 hat folgendes geschrieben Zum zitierten Posting springen:
Das öffnen/berechnen von Form2 dauert relativ lange, deswegen, lasse ich es in einem neuen Thread öffnen.
Wie ich schon geschrieben habe:
Das geht sowieso nicht.

Trenne die Daten von der Darstellung. Die Daten kannst du ruhig im Thread berechnen und danach musst du dann die Ergebnisse an den Hauptthread liefern (delegates, ...) und im Kontext des Hauptthreads das zweite Fenster öffnen.

Du darfst niemals direkt aus dem Thread auf die visuelle Oberfläche zugreifen.