我正在尝试阅读蒸汽,流仍在继续。
我已经得到了以下内容,但我发现有点奇怪,我将不断检查空流字符。在有更多数据之前,没有办法让线程休眠吗?
这里的速度非常重要,因为它必须处理高负载。
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
。