2016-08-17 1 views
1

Stream ist sehr häufig in Node.js und sie sind wirklich einfach zu handhaben. Es ist sehr einfach einen Strom zu erzeugen, und wenn wir eine haben, können wir so etwas wie tun:Gibt es ein .NET Core-Analog zu dem stream.on ('data'), das mit Node.js verwendet wird?

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

die Daten zu verarbeiten, wie es aus dem Strom kommt.

Gibt es ein .NET Core-Analog dazu? Ich meine, ich weiß, dass .NET sehr unterschiedlich ist, da es keine Ereignisschleife und so weiter gibt.

Aber ich frage mich, ob wir, obwohl sie sich grundlegend von Node.js unterscheiden, die gleiche Art von Verhalten erreichen könnten.

+1

Blick in RX. Es ist dem Muster, nach dem Sie suchen, am nächsten. – galenus

Antwort

-1

Möglicherweise.

Überprüfen Sie die MSDN-Dokumentation für System.IO.Stream.

Es gibt verschiedene Arten von Streams.

0

Der größte Unterschied besteht im asynchronen Modell: C# verwendet async - await für Asynchronität, nicht Callbacks. Dann gibt es einen Unterschied in der API: Sie können entweder Stream verwenden, was Ihnen Daten als byte[] (die Sie selbst zuordnen müssen) gibt. Oder Sie können StreamReader verwenden, was Ihnen Daten wie char[] oder Zeilen wie string gibt.

So, Ihre Optionen sind:

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 
} 
Verwandte Themen