Padrões para o servidor de rede multithread em c #

Existem modelos / padrões / guias que eu possa seguir para projetar um servidor multithread? Não consigo encontrar nada terrivelmente útil on-line através das minhas pesquisas no google.

Meu programa iniciará um thread para escutar conexões usando o TcpListener. Cada conexão do cliente será manipulada por seu próprio encadeamento IClientHandler. O servidor irá encapsular o clientHandler.HandleClient em um delegado, chamar BeginInvoke e, em seguida, deixar de se importar com isso.

Eu também preciso ser capaz de desligar o thread de escuta, o que é algo que eu não estou encontrando muitos exemplos online.

Estou supondo que algum mix de bloqueio / AutoResetEvents / threading magic combinado com o async BeginAceptTcpClient e EndAcceptTcpClient me levará até lá, mas quando se trata de código de rede, para mim tudo foi feito. Então eu tenho que acreditar que há apenas um padrão por aí que eu posso seguir e não ficar totalmente confuso com a miríade de casos de canto multithread que eu nunca consigo ficar perfeito.

Obrigado.

questionAnswers(2)

yourAnswerToTheQuestion