Warum blockiert Console.WriteLine () den Rückruf von Stream.ReadAsync ()?

9

Ich habe eine Rückruffunktion, in der ich versuche, die Daten, die ich gelesen habe, in ein überschriebenes ReadAsync () zu schreiben.

%Vor%

Das überschriebene ReadAsync () sieht folgendermaßen aus:

%Vor%

Was ich eigentlich erreichen möchte, ist, einen Netzwerkstream zu überwachen, bevor er von einem XmlReader geparst wird. Dies bezieht sich auf meine andere Frage & gt; Gleichzeitiges Lesen von demselben SslStream? & lt ;. Wie würde ich das tun?

AKTUALISIEREN :

Tatsächlich blockiert Encoding.UTF8.GetString(bytes) die Anwendung. Um die Frage zu vervollständigen, lese ich den Code zum Lesen des XML-Streams.

%Vor%     
Tony Stark 23.08.2013, 15:37
quelle

1 Antwort

1

StreamCallback () blockiert basierend auf dem von Ihnen geposteten Code, bis dieser Stream endet. Sie übergeben einen Bytezeiger an Encoding.UTF8.GetString (Bytes); Also muss es Byte abfragen, bis es das Ende erreicht. Es wird niemals das Ende erreichen, da Bytes aus einem Stream kommen, bis dieser Stream geschlossen ist.

Sie müssen Ihren Stream entweder eine bestimmte Anzahl von Bytes gleichzeitig verarbeiten oder bis ein bestimmtes Zeichen zu sehen ist.

    
iheanyi 15.11.2013 00:03
quelle

Tags und Links