逐个字符读取流字符的正确方法

本文关键字:字符 方法 读取 | 更新日期: 2023-09-27 18:34:57

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

我已经得到了以下内容,但我发现有点奇怪,我将不断检查空流字符。在有更多数据之前,没有办法让线程休眠吗?

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

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;
}

逐个字符读取流字符的正确方法

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

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