Entwickler-Ecke
WinForms - Form in einem neuen Thread öffnen
vreden123 - Mi 11.05.11 23:39
Titel: Form in einem neuen Thread öffnen
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 - Do 12.05.11 05:49
vreden123 hat folgendes geschrieben : |
| 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 - 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 - Do 12.05.11 13:55
vreden123 hat folgendes geschrieben : |
| 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!