是否有与Node.js一起使用的stream.on('data')的.NET Core模拟?

时间:2016-08-17 17:35:02

标签: javascript .net node.js stream .net-core

Stream在Node.js中很常见,它们很容易处理。创建一个流非常简单,一旦我们有一个,我们可以做类似的事情:

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

处理来自流的数据。

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

但我想知道,尽管与Node.js有根本的不同,我们可以完成同样的行为。

2 个答案:

答案 0 :(得分:0)

最大的区别在于异步模型: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
}

答案 1 :(得分:-1)

潜在

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

有不同类型的流。