Der Unterschied zwischen StreamReader.Read und StreamReader.ReadBlock
-
09-09-2019 - |
Frage
Die Dokumentation sagt einfach Lies-Block ist
"eine blockierende Version von Read"
aber was bedeutet das?
Jemand anderes die Frage gestellt hat, bevor aber, nicht wahr?
http://www.pcreview.co.uk/forums/thread- 1385785.php
Der Mann antwortete und sprach
Im Grunde bedeutet es, dass Sie auf StreamReader.ReadBlock verlassen können nicht bis der Rückkehr entweder es so viel gelesen hat, wie Sie es gefragt, oder Es ist das Ende des Stroms erreicht.
Bin ich richtig zu verstehen, dass dies erforderlich ist, da lesen können Sie nicht alles, was Sie gefragt? Und das nur, weil es 0 zurück, bedeutet nicht das Ende der Datei erreicht?
Dies bedeutet also, etwas anderes als die Anzahl von Bytes überprüfen zurückgegeben (EndOfStream?) Oder benutzen Lies-Block statt?
Lösung
Lies-Block bedeutet nicht, es Thread-sicher ist. Wenn Sie Reflector bei der Umsetzung von StreamReader.ReadBlock suchen verwenden (die von TextReader.ReadBlock vererbt wird), die alle es tut, ist mehrere Anrufe auf die Methode „Read“ machen, bis entweder das „Lesen“ Methode gibt 0 oder wir lesen, wie viele Bytes wie gewünscht. Dies ist notwendig, weil die Methode „Read“ wird nicht unbedingt so viele Bytes zurück, wie Sie gefragt.