C#中多线程网络服务器的模式

时间:2008-09-29 15:24:48

标签: c# multithreading asynchronous network-programming

我是否可以遵循设计多线程服务器的模板/模式/指南?我通过谷歌搜索在网上找不到任何有用的东西。

我的程序将启动一个线程来使用TcpListener侦听连接。 每个客户端连接都将由它自己的IClientHandler线程处理。服务器将clientHandler.HandleClient包装在委托中,调用BeginInvoke,然后退出关心它。

我还需要能够干净地关闭监听线程,这是我没有找到很多在线的例子。

我假设将一些lock / AutoResetEvents / threading魔法与异步BeginAceptTcpClient和EndAcceptTcpClient混合在一起会让我在那里,但是当谈到网络代码时,对我来说,一切都已完成。所以我不得不相信只有一些模式我可以遵循并且不会被无数多线程角落完全混淆,我似乎永远无法完美。

感谢。

2 个答案:

答案 0 :(得分:12)

奇怪的是,你可能会在计算机科学作业CSC 512 Programming Assignment 4: Multi-Threaded Server With Patterns上找到一些东西。尽管它是C ++伏都教,但对于能够做C#的人来说理论是可以理解的。

尽管你可以在main page上获得完整的阅读清单。

答案 1 :(得分:3)

看看上一个问题:

How do you minimize the number of threads used in a tcp server application?

这不是严格的C#特定,但它有一些很好的建议。