Muster für Multithread-Netzwerkserver in C #
Gibt es Vorlagen / Muster / Anleitungen, nach denen ich einen Multithread-Server entwerfen kann? Ich kann online über meine Google-Suche nichts fürchterlich Nützliches finden.
Mein Programm startet einen Thread, um mithilfe von TcpListener auf Verbindungen zu warten. Jede Client-Verbindung wird von einem eigenen IClientHandler-Thread verwaltet. Der Server wickelt den clientHandler.HandleClient in einen Delegaten ein, ruft BeginInvoke auf und beendet die Pflege.
Ich muss auch in der Lage sein, den Abhör-Thread sauber herunterzufahren, was etwas ist, das ich nicht viele Beispiele von Online finde.
Ich gehe davon aus, dass eine Mischung aus Lock / AutoResetEvents / Threading-Magie in Kombination mit dem asynchronen BeginAceptTcpClient und EndAcceptTcpClient mich dahin bringt, aber wenn es um Netzwerkcode geht, ist für mich alles erledigt. Ich muss also glauben, dass es da draußen nur ein Muster gibt, dem ich folgen kann, und dass ich nicht völlig durch die unzähligen Multithread-Eckkoffer verwirrt werde, die ich niemals perfekt erscheinen lassen kann.
Vielen Dank.