我有一个场景,其中我有一个TcpListener
可以接受多个TcpClient
;接受后,他们用NetworkStream
以全双工模式交换数据,因为在MS doc中定义:
可以在NetworkStream类的实例上同时执行读写操作,而无需同步。只要有一个用于写操作的唯一线程和一个用于读操作的唯一线程,读写线程之间就不会存在交叉干扰,也不需要同步。
所以,如果我像this question中建议的那样编写一个acceptTcpListener的多线程实现:
while (listening)
{
TcpClient client = listener.AcceptTcpClient();
// Start a thread to handle this client...
new Thread(() => HandleClient(client)).Start();
}
我怎么能优雅地停止一个连接?我是否有可能“控制”我创建的这些线程? 我为每个线程执行“HandleClient”一个线程来读取NetworkStream并且ondemand一个线程通过NetworkStream写入。