Diferencia entre StreamReader.Leer y StreamReader.ReadBlock


La documentación simplemente dice ReadBlock es

"una versión de bloqueo de Read"

Pero, ¿qué significa eso?

Alguien más ha hecho la pregunta antes, pero, ¿eh?

Http://www.pcreview.co.uk/forums/thread-1385785.php

El tipo que respondió dijo

Básicamente, significa que puede confiar en StreamReader.ReadBlock not regresando hasta que se lea todo lo que le has pedido, o ha llegado al final de la flujo.

¿Estoy entendiendo correctamente que esto es necesario porque Read puede no darle todo lo que pidió? Y que sólo porque devuelve 0 no significa que llegó al final del archivo?

Así que esto significa comprobar algo que no sea el número de bytes devueltos (EndOfStream?) o utilizar ReadBlock en su lugar?

Author: Davi Fiamenghi, 2009-02-26

1 answers

ReadBlock no significa que sea seguro para subprocesos. Si utiliza Reflector para ver la implementación de StreamReader.ReadBlock (que se hereda de TextReader.ReadBlock), todo lo que hace es hacer múltiples llamadas al método "Read" hasta que el método "Read" devuelva 0 o hayamos leído tantos bytes como solicitamos. Esto es necesario porque el método" Read " no necesariamente devolverá tantos bytes como pidió.

 31
Author: David,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-26 20:41:43