如何在异步循环中停止使用过多的CPU?

时间:2018-04-10 13:04:25

标签: c#

我有一个基本的inputElemRef服务器接受TcpListener个请求,并将它们放在不同的线程中。

接受请求的服务器线程使用TcpClient,因此它返回cpu资源,并且在获得客户端请求之前不使用任何cpu。

我的客户端循环调用await _server.AcceptTcpClientAsync(),但它包含在await client.GetStream().ReadAsync中,所以如果没有数据,它只返回null,所以没有等待任何东西。

我知道的选项是添加if (client.Connected && client.Available > 0),这是不好的做法,会减慢我的应用,使用Thread.Sleep,但我必须知道以某种方式设置或删除{ {1}}检查,无限期地等待数据,所以如果服务器出现故障,程序实际上就会死机。

编辑:添加了客户端代码

EventWaitHandle

0 个答案:

没有答案