Frank (no reg): VB.NET > Thread mit übergabewerten.

Beitrag lesen

Hi, bitte kein TOFU und kein TUFO :)    Es reicht völlig, wenn du die einzelnen Textpassagen zitierst, auf die du antworten willst, alles andere ist nur Ballast für dieses arme Board ... äh ... Forum.

Wieviel Sinn macht ein Single-User-Chat? Für Leute, die gern Selbstgespräche führen vielleicht nicht schlecht aber sonst? Für mich ein Programmierbeispiel abseits der Praxis. ;)

Die suche nach "chat .net socket thread" hätte dich recht schnell zu mehreren  Ergebnissen (auch bei CodeProject)  gebracht, vielleicht nicht gerade immer in VB.net. Aber C# zu VB.Net zu konvertieren ist doch nicht so schwer, ich muss jeden Tag VB6 zu C# umschreiben ;)

Was soll ein ChatServer machen?

  • Daten annehmen von Clients
  • Daten weitergeben an alle anderen Clients

Sowas macht man meisten mit zwei sich synchronisierenden Threads. Also System.Threading.Thread, so wie du schon vorhattest.

  • einer welcher eine Verbindung von Clients annimmt und die Daten empfängt
  • einer welche die angenommenen Daten an andere Clients schickt

Die beiden Threads synchronisieren sich über eine System.Collections.Generic.Queue(Of T). Beide hängen drauf mittels lock oder Monitor.Enter und signalisieren sich mittels Monitor.Pulse(deinQueueObject) und Monitor.Wait() in einer unendlichen[1] Schleife.

[1] die Beendigung der Schleife regelst du über eine statische Variable nach dem Schema
while(true)
{
 if(terminateLoop) break;
}

..., welche du vom Hauptthread (dem UI Thread z.b. setzt)

Und bitte nicht mit Exceptions irgendwo rausspringen, Exceptions sind böse, besonders die, die du selbst wirfst. ;)

BTW: Gallileo Literatur ist nicht grad das Gelbe vom Ei. ISBN: 0-7356-1579-9 oder 0-7356-1721-X wären da sicher besser. ;)

Ciao, Frank