我正在循环中读取TcpClient / NetworkStream中的数据,如下所示:
while (true)
{
byte[] answer = new byte[1000];
int count = m_networkStream.Read(answer, 0, 1000);
if (count > 0)
{
...
}
}
不好的是,当没有数据可用时,Read()
会立即返回0。包装TcpClient
没有Select()
方法或类似方法,在某些数据到达之前会停止。所以我有一个紧张的循环占用了大量的CPU时间。
那么......如何才能做得更好?有没有办法挂起线程,直到数据到达或有Read()
方法阻止?
谢谢!
编辑:这不是另一个链接问题的重复!当你没有编辑(或更好:损坏)我原来的问题时,你就能看到这个。另一个问题的原因是“数据可用”的永久循环,这里读取数据不会阻塞/我正在寻找在套接字上执行select()的方法。
答案 0 :(得分:0)