从NetworkStream读取数据而不会出现大量循环

时间:2014-01-30 14:27:07

标签: c# .net select tcp-ip

我正在循环中读取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()的方法。

1 个答案:

答案 0 :(得分:0)