我有一个基本的inputElemRef
服务器接受TcpListener
个请求,并将它们放在不同的线程中。
接受请求的服务器线程使用TcpClient
,因此它返回cpu资源,并且在获得客户端请求之前不使用任何cpu。
我的客户端循环调用await _server.AcceptTcpClientAsync()
,但它包含在await client.GetStream().ReadAsync
中,所以如果没有数据,它只返回null,所以没有等待任何东西。
我知道的选项是添加if (client.Connected && client.Available > 0)
,这是不好的做法,会减慢我的应用,使用Thread.Sleep
,但我必须知道以某种方式设置或删除{ {1}}检查,无限期地等待数据,所以如果服务器出现故障,程序实际上就会死机。
编辑:添加了客户端代码
EventWaitHandle