Naja, die server-spezifischen Dinge sind schon relevant, weil die Kommunikation zwischen Server und Client besondere Probleme bringen. Aber für deine Frage ist das erst in zweiter Linie wichtig.
Ich sehe nach wie vor zwei Hauptfehler:
Zum einen hast du innerhalb der Form1-Klasse eine Instanz f1 auf "sich selbst". So etwas kenne ich nur aus statischen Elementen (wie Singleton). Schmeiß all das raus, dann ist dieser Teil korrekt. Vor allem diese Stelle ist viel einfacher:
C#-Quelltext
1: 2: 3: 4: 5:
| public void SetTextBox1Text(string value) { this.textBox1.Text = value; } |
Noch zur Erklärung: Mit "new" wird eine Instanz des betreffenden Objekts erzeugt. Diese Instanz existiert (nur) innerhalb der Methode gebenamenaus() der serverthread-Klasse. Von dort aus willst du auf diese Instanz zugreifen; innerhalb der Methode SetTextBox1Text() hat die dafür verwendete Instanz natürlich
Zugriff auf ihre eigenen Inhalte; wenn du unbedingt einen Verweis "auf sich selbst" haben willst, dann verwende
this.
Aber dazu gibt es einen zweiten Hauptfehler, nämlich der Aufruf von serverthread durch Form1.Button1.Click. Durch Form1 wird damit ein neuer serverthread erstellt, durch serverthread.gebenamenaus wird ein neues Form1 erzeugt usw. Merkst du diese Zirkel-Verknüpfung?
Dringende Empfehlung: Kümmere dich um die
Grundlagen der OOP, die Zusammenarbeit zwischen verschiedenen Klassen und den Unterschied zwischen Klasse und Instanz. Vielleicht hilft dazu
OpenBook OOP.
Gruß Jürgen