Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

FileStream.BeginRead (Método)

Comienza una operación de lectura asincrónica. (Utilice ReadAsync en su lugar; vea la sección comentarios.)

Espacio de nombres:  System.IO
Ensamblado:  mscorlib (en mscorlib.dll)

[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public override IAsyncResult BeginRead(
	byte[] array,
	int offset,
	int numBytes,
	AsyncCallback userCallback,
	Object stateObject
)

Parámetros

array
Tipo: System.Byte[]
Búfer en el que se leen los datos.
offset
Tipo: System.Int32
Desplazamiento de bytes en el parámetro array donde debe comenzar la lectura.
numBytes
Tipo: System.Int32
Número máximo de bytes que se pueden leer.
userCallback
Tipo: System.AsyncCallback
Método al que se va a llamar cuando se complete la operación de lectura asincrónica.
stateObject
Tipo: System.Object
Objeto proporcionado por el usuario que distingue esta solicitud de lectura asincrónica de otras.

Valor devuelto

Tipo: System.IAsyncResult
Objeto que hace referencia a la lectura asincrónica.

ExcepciónCondición
ArgumentException

La longitud de matriz menos offset es menor que numBytes.

ArgumentNullException

array es null.

ArgumentOutOfRangeException

El valor de offset o numBytes es negativo.

IOException

Se intentó realizar una lectura asincrónica después del final del archivo.

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

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

FileStream proporciona dos modos de funcionamiento distintos: E/S sincrónica y E/S asincrónica. Aunque puede utilizarse cualquiera de ellos, es posible que los recursos del sistema operativo subyacente permitan el acceso en solo uno de estos modos. De forma predeterminada, FileStream abre el identificador del sistema operativo de manera sincrónica. En Windows, esto ralentiza los métodos asincrónicos. Si se utilizan métodos asincrónicos, se ha de usar el constructor FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean).

NotaNota

Se utiliza la propiedad CanRead para determinar si la instancia actual admite operaciones de lectura. Para obtener información adicional, vea CanRead.

Si una secuencia se encuentra cerrada o se pasa un argumento no válido, se producirán inmediatamente excepciones a partir de BeginRead. Los errores que se producen durante una solicitud de lectura asincrónica, como es el caso de un error en el disco durante una solicitud de E/S, tienen lugar en el subproceso del grupo de subprocesos y se hacen visibles en una llamada a EndRead.

Para averiguar cuántos bytes se han leído, es necesario llamar a EndRead con este IAsyncResult.

La existencia de varias solicitudes asincrónicas simultáneas convertirán en incierta la orden de finalización de la solicitud.

Para obtener una lista de operaciones de archivo comunes y directorio, vea Tareas de E/S comunes.

NotaNota

El atributo HostProtectionAttribute aplicado a este tipo o miembro tiene el valor de propiedad Resources siguiente: ExternalThreading. El atributo HostProtectionAttribute no afecta a las aplicaciones de escritorio (que normalmente se inician haciendo doble clic en un icono, escribiendo un comando o introduciendo una dirección URL en el explorador). Para obtener más información, vea la clase HostProtectionAttribute o Programación en SQL Server y atributos de protección de host.

Este ejemplo de código forma parte de un ejemplo más extenso referente al constructor FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean).


static void EndWriteCallback(IAsyncResult asyncResult)
{
    State tempState = (State)asyncResult.AsyncState;
    FileStream fStream = tempState.FStream;
    fStream.EndWrite(asyncResult);

    // Asynchronously read back the written data.
    fStream.Position = 0;
    asyncResult = fStream.BeginRead(
        tempState.ReadArray, 0 , tempState.ReadArray.Length, 
        new AsyncCallback(EndReadCallback), tempState);

    // Concurrently do other work, such as 
    // logging the write operation.
}


.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft