CryptoStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Comienza una operación de lectura asincrónica. (Considere usar ReadAsync en su lugar).
public:
override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback callback, object state);
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginRead (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Parámetros
- buffer
- Byte[]
El búfer en el que se leen los datos.
- offset
- Int32
Posición de desplazamiento en bytes de buffer
donde se comienza a escribir los datos leídos de la secuencia.
- count
- Int32
Número máximo de bytes que se pueden leer.
- callback
- AsyncCallback
Devolución de llamada asincrónica opcional, a la que se llamará cuando haya finalizado la lectura.
- state
- Object
Objeto proporcionado por el usuario que distingue esta solicitud de lectura asincrónica de otras.
Devoluciones
IAsyncResult que representa la lectura asincrónica, que puede hallarse aún pendiente.
Excepciones
Se ha intentado realizar una lectura asincrónica más allá del final de la secuencia o se ha producido un error de disco.
Uno o varios argumentos no son válidos.
Se efectuó una llamada a los métodos después de cerrar la secuencia.
La implementación actual de Stream
no admite la operación de escritura.
Comentarios
Importante
A partir de .NET 6, este método podría no leer tantos bytes como se solicitaron. Para obtener más información, vea Lecturas parciales y de cero bytes en DeflateStream, GZipStream y CryptoStream.
En .NET Framework 4 y versiones anteriores, es necesario usar métodos como BeginRead y EndRead para implementar operaciones de E/S asincrónicas. Estos métodos siguen estando disponibles en las versiones actuales para admitir código heredado; sin embargo, los nuevos métodos asincrónicos, como ReadAsync, WriteAsync, CopyToAsyncy FlushAsync, le ayudan a implementar operaciones asincrónicas de E/S más fácilmente.
Pase el IAsyncResult
valor devuelto al EndRead método de la secuencia para determinar cuántos bytes se leyeron y liberar los recursos del sistema operativo usados para leer.
EndRead se debe llamar una vez para cada llamada a BeginRead. Para ello, use el mismo código que llamó BeginRead
a o en una devolución de llamada pasada a BeginRead
.
La posición actual de la secuencia se actualiza cuando se emite la lectura o escritura asincrónica, no cuando se completa la operación de E/S.
Varias solicitudes asincrónicas simultáneas representan el orden de finalización de la solicitud incierta.
Use la CanRead propiedad para determinar si la instancia actual admite la lectura.
Si se cierra una secuencia o se pasa un argumento no válido, las excepciones se inician inmediatamente desde BeginRead
. Los errores que se producen durante una solicitud de lectura asincrónica, como un error de disco durante la solicitud de E/S, se producen en el subproceso del grupo de subprocesos y producen excepciones al llamar a EndRead
.