通过char读取流char的正确方法

时间:2014-12-20 15:02:36

标签: c# stream tcpclient

我正在尝试读取蒸汽,流继续。

我已经得到了以下内容,但我觉得有点奇怪,我将不断检查空流角色。在有更多数据之前,是否无法使线程休眠?

这里的速度非常重要,因为它必须处理高负荷。

NetworkStream networkStream = client.GetStream();
try
{
    var reader = new StreamReader(networkStream);
    StringBuilder stringBuilder = new StringBuilder();

    char c = (char)reader.Read();
    while (true)
    {
        if (c != (char)65535)
        {
            if (c == StreamSettings.MessageSplitChar)
            {
                // Do work with string here
            } 
            else
            {
                stringBuilder.Append(c);
            }
        }
        else
        {
            // No work to do sleep some
            Thread.Sleep(10);
        }
        c = (char)reader.Read();
    }
}
catch (Exception ex)
{
    throw;
}

1 个答案:

答案 0 :(得分:2)

Read等待至少再有一个字节可用。你不需要等待自己。它会在流的末尾返回-1

(char)65535是一个黑客。这是一个满溢的演员阵容。只需检查-1