Ensamblado: mscorlib (en mscorlib.dll)
Public Overrides Function BeginRead ( _ array As Byte(), _ offset As Integer, _ numBytes As Integer, _ userCallback As AsyncCallback, _ stateObject As Object _ ) As IAsyncResult
Dim instance As FileStream Dim array As Byte() Dim offset As Integer Dim numBytes As Integer Dim userCallback As AsyncCallback Dim stateObject As Object Dim returnValue As IAsyncResult returnValue = instance.BeginRead(array, offset, numBytes, userCallback, stateObject)
public override IAsyncResult BeginRead ( byte[] array, int offset, int numBytes, AsyncCallback userCallback, Object stateObject )
public: virtual IAsyncResult^ BeginRead ( array<unsigned char>^ array, int offset, int numBytes, AsyncCallback^ userCallback, Object^ stateObject ) override
public IAsyncResult BeginRead ( byte[] array, int offset, int numBytes, AsyncCallback userCallback, Object stateObject )
public override function BeginRead ( array : byte[], offset : int, numBytes : int, userCallback : AsyncCallback, stateObject : Object ) : IAsyncResult
Parámetros
- array
-
Búfer en el que se leen los datos.
- offset
-
Desplazamiento de bytes en el parámetro array donde debe comenzar la lectura.
- numBytes
-
Número máximo de bytes que se pueden leer.
- userCallback
-
Método al que se va a llamar cuando se complete la operación de lectura asincrónica.
- stateObject
-
Objeto proporcionado por el usuario que distingue esta solicitud de lectura asincrónica de otras.
Valor devuelto
IAsyncResult que hace referencia a la lectura asincrónica.| Tipo de excepción | Condición |
|---|---|
| La longitud de matriz menos offset es menor que numBytes. |
|
| array es referencia de objeto null (Nothing en Visual Basic). |
|
| El valor de offset o numBytes es negativo. |
|
| Se intentó realizar una lectura asincrónica después del final del archivo. |
Se debe llamar con exactitud a EndRead 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 sólo 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).
Nota |
|---|
| Se utiliza la propiedad CanRead para determinar si la instancia actual admite operaciones de lectura. Para obtener más información, 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.
Nota |
|---|
| En Windows, todas las operaciones de E/S menores de 64 KB se completarán de forma sincrónica para obtener un mejor rendimiento. Es posible que la E/S asincrónica dificulte el rendimiento en el caso de tamaños de búfer menores que 64 KB. |
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.
En la siguiente tabla se muestran ejemplos de otras tareas de E/S típicas o relacionadas.
| Para realizar esta operación... | Vea el ejemplo de este tema... |
|---|---|
| Crear un archivo de texto | |
| Escribir en un archivo de texto | |
| Leer de un archivo de texto | |
| Anexar texto a un archivo | |
| Cambiar de nombre o mover un archivo | |
| Copiar un archivo | |
| Obtener el tamaño de un archivo | |
| Obtener los atributos de un archivo | |
| Establecer los atributos de un archivo | |
| Determinar si un archivo existe | |
| Leer de un archivo binario | |
| Escribir en un archivo binario | |
| Crear un directorio | Directory.CreateDirectory |
Este ejemplo de código forma parte de un ejemplo más extenso referente al constructor FileStream(String,FileMode,FileAccess,FileShare,Int32,Boolean).
Private Shared Sub EndWriteCallback(asyncResult As IAsyncResult) Dim tempState As State = _ DirectCast(asyncResult.AsyncState, State) Dim fStream As FileStream = tempState.FStream fStream.EndWrite(asyncResult) ' Asynchronously read back the written data. fStream.Position = 0 asyncResult = fStream.BeginRead( _ tempState.ReadArray, 0 , tempState.ReadArray.Length, _ AddressOf EndReadCallback, tempState) ' Concurrently do other work, such as ' logging the write operation. End Sub
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. }
static void EndWriteCallback( IAsyncResult^ asyncResult ) { State^ tempState = dynamic_cast<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, gcnew AsyncCallback( &FStream::EndReadCallback ), tempState ); // Concurrently do other work, such as // logging the write operation. } };
static void EndWriteCallback(IAsyncResult asyncResult)
{
State tempState = ((State)(asyncResult.get_AsyncState()));
FileStream fStream = tempState.get_FStream();
fStream.EndWrite(asyncResult);
// Asynchronously read back the written data.
fStream.set_Position(0);
asyncResult = fStream.BeginRead(tempState.get_ReadArray(), 0,
tempState.get_ReadArray().length ,
new AsyncCallback(EndReadCallback), tempState);
// Concurrently do other work, such as
// logging the write operation.
} //EndWriteCallback
Windows 98, Windows 2000 SP4, Windows Millennium, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition
.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.
Nota