Problem mit _beginthread

Hallo Cromon,

vielen Dank für Deine schnelle und hilfreiche Antwort. Ich habe ein bißchen rumprobiert und habe folgenden Code gefunden, der den delegate-Befehl sehr gut beschreibt. Ich habe daraufhin mein Programm umgeschrieben, dass das Feld nicht mehr über einen Übergabeparameter sondern damit gefüllt wird. Hier der Beispielcode, falls noch mehr damit Probleme haben.
Man braucht ein Formular mit dem Textfeld "chat_textBox" und nem Button "Button1". Gehört alles in die Klassendokumentation des Formulars.
Code:
public:
   void DoWork()    // Ursprüngliche Funktion
   {
	   this->chat_textBox->AppendText("Das ist der Text aus DoWork");
	   this->chat_textBox->AppendText(Environment::NewLine);
   }

   void DoWork2()   // Neue Funktion
   {
	   this->chat_textBox->Invoke(gcnew new_DoWork_delegate( this, &multithreads::Form1::new_DoWork));
   }
   delegate void new_DoWork_delegate();
   void new_DoWork()
   {
	   this->chat_textBox->AppendText("Das ist der Text aus new_DoWork");
	   this->chat_textBox->AppendText(Environment::NewLine);
   }

   	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
   DoWork();
   // DoWork2 im Hauptthread starten
   DoWork2();

// Neuen Thread erstellen für DoWork2
   this->chat_textBox->AppendText("Neuer Thread wird gestartet");
   this->chat_textBox->AppendText(Environment::NewLine);

   ThreadStart^ thread1s = gcnew ThreadStart( this, &Form1::DoWork2 );
   Thread^ thread1 = gcnew Thread( thread1s );
   thread1->Start();
   }

Natürlich war es das für mich noch nicht. Ich muss einen Chatserver programmieren und wollte im Client einen Hintergrundthread erstellen, der in einer Endlosschleife die Nachrichten vom Server holt und in dem Textfeld ausgiebt. Leider funktioniert das nicht, wenn ich die Methode als Endlosschleife laufen lasse, baut er das Ausgabeformular nicht mehr auf. Wenn ich im Hintergrundthread nur einen Durchlauf in der Schleife einstelle, dann klappt es. Also anscheinend läuft bei der Endlosschleife nur noch der neue Thread und der ursprüngliche nicht mehr!? Muss ich 2 neue Threads erstellen?
Wäre super, wenn nochmal jemand einen Tipp hätte.
Danke und Gruß Eva - jetzt angemeldet ;-)
 
Zuletzt bearbeitet:
Hallo Eva!

Hast du dazu vielleicht noch ein bisschen Code? Grundsätzlich sollten Schleifen in einem anderen Thread den Dialog nicht blockieren. Vielleicht wäre es jetzt auch gut ein neues Thema zu starten im .NET-Forum?

Gruss
Cromon
 
Zurück