Neues Fenster öffnen in Thread

aquasonic

Erfahrenes Mitglied
Hallo zusammen

Ich habe eine Client/Server Architektur, welche ich über UDP kommunizieren lasse. Ich rufe am Anfang ein Formular auf und starte sogleiche das Receive für UDP Packages (in einem Thread). Nun bekomme ich vom Server eine Nachricht, ich parse die auf dem Client und führe je nach Nachricht eine Aktion aus.

Ich möchte nun z.b. ein neues Formular öffnen.

PHP:
Form login = new frmLogin();

Dieses Form lädt er leider nicht vollständig, weil es ja im Thread gestartet wird, dieser aber immer am "Nachrichten abhören" ist. Wenn ich den Thread abbrechen würde, würde es das Fenster auch schliessen, da das Objekt (das Form) dann nicht mehr vorhanden ist.

Meine Frage ist nun, wie kann ich im Thread drin ein neues Fenster öffnen, welches unabhängig vom Thread ist, sondern der Klasse gehört, sprich dass ich auch nach beenden des Threads noch darauf zugreifen kann Ist ein bisschen schwierig erklärt, aber ich hoffe ihr kommt trotzdem nache. Vielen Dank schonmal für die Hilfe :)
 
Du müsstest im deinen Thread ein Ereignis auslösen, womit der anderen Thread(Hauptthread) benachrichtigt wird ein fenster zu öffnen.
 
Oder du schreibst ne Methode, die dir die Form öffnet, setzt in deinem Thread nen Flag, welcher deine Methode aufruft, und nach dem aufruf deiner Methode sich auf disabled setzt.

mfg
ziop
 
So mache ich es momentan ja auch. Was meinst du mit Disabled setzten? Das Thread? Dies kann ich ja nicht beenden, weil ich immer noch am abhören bin...Zudem würde es ja dann auch das Fenster wieder schliessen...
 
Hier mal ein bisschen Code:

PHP:
private void receiveMessage()
{
while(true)
{
  string stream = objUDPConn.ReceiveMessage(); //Warten bis Message kommt, wenn Message kommt var zuordnen und weiterfahren

  if (message.Equals("login"))
  {
    login();
  }
}
}

private void login() {
   Form bla = new frmLogin();
   bla.Show();
}
ReceiveMessage() ist der Thread, bez. wird durch
PHP:
threadConnUDP = new Thread(new Threadstart(receiveMessage));
erstellt...

das Form (frmLogin()) wird leider nicht vollständig geladen. Beende ich das Thread (threadConnUDP.Abort()) so wird auch das Fenster (frmLogin) wieder geschlossen.
 
Nein,
Das Flag disabelt setzen, das deine Methode nur 1-Mal durchgeführt wird, und anschliessend von Thread ignoriert wird.
 

Neue Beiträge

Zurück