是否有任何.NET Core类似于Node.js一起使用的stream.on('data')?



流在Node.js中非常常见,并且非常容易处理。创建一个流非常简单,一旦我们有了一个流,我们就可以这样做:

stream.on('data', (data) => {
    // processing
});

处理来自流的数据。

有没有类似的。net Core ?我的意思是,我确实知道 . net是非常不同的,因为没有事件循环等等。

但我想知道,尽管从根本上不同于Node.js,我们是否可以完成相同的行为

最大的区别在于异步模型:c#使用async - await进行异步,而不是回调。然后是API的区别:您可以使用Stream,它为您提供byte[]数据(您必须自己分配)。或者你可以使用StreamReader,它给你char[]的数据或string的行。

所以,你的选项是:

Stream.ReadAsync:

Stream stream = …;
byte[] buffer = new byte[1024];
int read;
while ((read = await stream.ReadAsync(buffer, 0, buffer.Length) != 0)
{
    // processing
}

StreamReader.ReadAsync:

StreamReader stream = …;
char[] buffer = new char[1024];
int read;
while ((read = await stream.ReadAsync(buffer, 0, buffer.Length) != 0)
{    
    // processing
}

StreamReader.ReadLineAsync:

StreamReader stream = …;
string line;
while ((line = await stream.ReadLineAsync()) != null)
{
    // processing
}

可能。

查看System.IO.Stream的MSDN文档。

有不同类型的流

相关内容

  • 没有找到相关文章

最新更新