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

标签 c# multithreading asynchronous network-programming

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

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

我还需要能够干净地关闭监听线程,这是我在网上找不到的很多示例。

我假设锁定/AutoResetEvents/线程魔法与异步 BeginAceptTcpClient 和 EndAcceptTcpClient 的一些组合会让我到达那里,但是当涉及到网络代码时,对我来说它已经完成了。所以我必须相信,我可以遵循一些模式,而不会被我似乎永远无法完美的无数多线程角落案例完全搞糊涂。

谢谢。

最佳答案

奇怪的是,您可能会在计算机科学作业中找到一些东西,CSC 512 Programming Assignment 4: Multi-Threaded Server With Patterns .虽然它是 C++ 巫术,但对于可以使用 C# 的人来说,这个理论是很容易理解的。

尽管您可以在 main page 上获得完整的好读物列表.

关于c# - C# 中多线程网络服务器的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/149163/

相关文章:

C#:使用锁会阻塞以后的调用。

c# - 从 Dictionary<int, StringBuilder> 到表值 SqlParameter。如何?

java - Mockito ArgumentCaptor 正在捕获大量重复记录

java - 删除已删除的 ConcurrentHashMap 元素有多安全?

iphone - 我如何处理异步意大利面条代码?

angular - 为什么异步 Angular 单元测试找不到 DOM 元素?

c# - 加载数据(异步/等待)

iphone - 我可以使用后台线程解析数据吗?

java - Vertx : executeBlocking() vs Future. 有什么区别?

c# - 为什么 Int64 和 UInt64 大小相同