FileStream.EndRead(IAsyncResult) Método

Definición

Espera a que se complete la operación asincrónica de lectura que se encuentra pendiente. (Considere usar ReadAsync(Byte[], Int32, Int32, CancellationToken) en su lugar).

C#
public override int EndRead (IAsyncResult asyncResult);

Parámetros

asyncResult
IAsyncResult

Referencia a la solicitud asincrónica pendiente a la que se debe esperar.

Devoluciones

Número de bytes leídos de la secuencia, que se encuentra entre 0 y el número de bytes solicitado. Las secuencias solo devuelven 0 al final de la secuencia; de lo contrario, se deben bloquear hasta que haya al menos 1 byte disponible.

Excepciones

asyncResult es null.

Este objeto IAsyncResult no se creó mediante una llamada a BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) en esta clase.

La secuencia está cerrada o se produjo un error interno.

Ejemplos

Este ejemplo de código forma parte de un ejemplo más grande proporcionado para el FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) constructor.

C#
static void EndReadCallback(IAsyncResult asyncResult)
{
    State tempState = (State)asyncResult.AsyncState;
    int readCount = tempState.FStream.EndRead(asyncResult);

    int i = 0;
    while(i < readCount)
    {
        if(tempState.ReadArray[i] != tempState.WriteArray[i++])
        {
            Console.WriteLine("Error writing data.");
            tempState.FStream.Close();
            return;
        }
    }
    Console.WriteLine("The data was written to {0} and verified.",
        tempState.FStream.Name);
    tempState.FStream.Close();

    // Signal the main thread that the verification is finished.
    tempState.ManualEvent.Set();
}

Comentarios

En .NET Framework 4 y versiones anteriores, tiene que usar métodos como BeginRead e EndRead implementar operaciones de archivo asincrónicas. Estos métodos siguen estando disponibles en .NET Framework 4.5 para admitir código heredado; sin embargo, los nuevos métodos asincrónicos, como ReadAsync, WriteAsync, CopyToAsyncy FlushAsync, le ayudan a implementar operaciones de archivos asincrónicas más fácilmente.

EndRead se debe llamar exactamente para cada llamada a BeginRead. Si no finaliza un proceso de lectura antes de comenzar otra lectura, puede provocar un comportamiento no deseado, como interbloqueo.

Este método invalida EndRead.

EndRead se puede llamar a en cada IAsyncResult desde BeginRead. Al llamar EndRead a , se indica cuántos bytes se leyeron desde la secuencia. EndRead se bloqueará hasta que se haya completado la operación de E/S.

Se aplica a

Producto Versiones
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Consulte también