Ensamblado: mscorlib (en mscorlib.dll)
Public Overrides Function BeginWrite ( _ 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.BeginWrite(array, offset, numBytes, userCallback, stateObject)
public override IAsyncResult BeginWrite ( byte[] array, int offset, int numBytes, AsyncCallback userCallback, Object stateObject )
public: virtual IAsyncResult^ BeginWrite ( array<unsigned char>^ array, int offset, int numBytes, AsyncCallback^ userCallback, Object^ stateObject ) override
public IAsyncResult BeginWrite ( byte[] array, int offset, int numBytes, AsyncCallback userCallback, Object stateObject )
public override function BeginWrite ( array : byte[], offset : int, numBytes : int, userCallback : AsyncCallback, stateObject : Object ) : IAsyncResult
Parámetros
- array
-
Búfer que contiene los datos que se van a escribir en la secuencia actual.
- offset
-
Desplazamiento en bytes de base cero de arraydonde se comienzan a copiar los datos en la secuencia actual.
- numBytes
-
Número máximo de bytes que se pueden escribir.
- userCallback
-
Método al que se va a llamar cuando se complete la operación de escritura asincrónica.
- stateObject
-
Objeto proporcionado por el usuario que distingue esta solicitud de lectura asincrónica de otras.
Valor devuelto
Un objeto IAsyncResult que hace referencia a la escritura asincrónica.| Tipo de excepción | Condición |
|---|---|
| La longitud de array menos offset es menor que numBytes. |
|
| array es referencia de objeto null (Nothing en Visual Basic). |
|
| El valor de offset o numBytes es negativo. |
|
| La secuencia no admite escritura. |
|
| La secuencia está cerrada. |
|
| Se produce un error de E/S. |
Se ha de llamar a EndWrite exactamente una vez en cada IAsyncResult de BeginWrite. EndWrite se bloqueará hasta que haya finalizado la operación de E/S.
Este método reemplaza a BeginWrite.
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).
Si una secuencia se encuentra cerrada o se pasa un argumento no válido, se producirán inmediatamente excepciones a partir de BeginWrite. Los errores que se producen durante una solicitud de escritura 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 EndWrite.
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 EndWrite 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).
Shared Sub Main() ' Create a synchronization object that gets ' signaled when verification is complete. Dim manualEvent As New ManualResetEvent(False) ' Create random data to write to the file. Dim writeArray(100000) As Byte Dim randomGenerator As New Random() randomGenerator.NextBytes(writeArray) Dim fStream As New FileStream("Test#@@#.dat", _ FileMode.Create, FileAccess.ReadWrite, _ FileShare.None, 4096, True) ' Check that the FileStream was opened asynchronously. If fStream.IsAsync = True Console.WriteLine("fStream was opened asynchronously.") Else Console.WriteLine("fStream was not opened asynchronously.") End If ' Asynchronously write to the file. Dim asyncResult As IAsyncResult = fStream.BeginWrite( _ writeArray, 0, writeArray.Length, _ AddressOf EndWriteCallback , _ New State(fStream, writeArray, manualEvent)) ' Concurrently do other work and then wait ' for the data to be written and verified. manualEvent.WaitOne(5000, False) End Sub
static void Main() { // Create a synchronization object that gets // signaled when verification is complete. ManualResetEvent manualEvent = new ManualResetEvent(false); // Create random data to write to the file. byte[] writeArray = new byte[100000]; new Random().NextBytes(writeArray); FileStream fStream = new FileStream("Test#@@#.dat", FileMode.Create, FileAccess.ReadWrite, FileShare.None, 4096, true); // Check that the FileStream was opened asynchronously. Console.WriteLine("fStream was {0}opened asynchronously.", fStream.IsAsync ? "" : "not "); // Asynchronously write to the file. IAsyncResult asyncResult = fStream.BeginWrite( writeArray, 0, writeArray.Length, new AsyncCallback(EndWriteCallback), new State(fStream, writeArray, manualEvent)); // Concurrently do other work and then wait // for the data to be written and verified. manualEvent.WaitOne(5000, false); }
int main() { // Create a synchronization object that gets // signaled when verification is complete. ManualResetEvent^ manualEvent = gcnew ManualResetEvent( false ); // Create the data to write to the file. array<Byte>^writeArray = gcnew array<Byte>(100000); (gcnew Random)->NextBytes( writeArray ); FileStream^ fStream = gcnew FileStream( "Test#@@#.dat",FileMode::Create,FileAccess::ReadWrite,FileShare::None,4096,true ); // Check that the FileStream was opened asynchronously. Console::WriteLine( "fStream was {0}opened asynchronously.", fStream->IsAsync ? (String^)"" : "not " ); // Asynchronously write to the file. IAsyncResult^ asyncResult = fStream->BeginWrite( writeArray, 0, writeArray->Length, gcnew AsyncCallback( &FStream::EndWriteCallback ), gcnew State( fStream,writeArray,manualEvent ) ); // Concurrently do other work and then wait // for the data to be written and verified. manualEvent->WaitOne( 5000, false ); }
public static void main(String[] args)
{
// Create a synchronization object that gets
// signaled when verification is complete.
ManualResetEvent manualEvent = new ManualResetEvent(false);
// Create random data to write to the file.
ubyte writeArray[] = new ubyte[100000];
new Random().NextBytes(writeArray);
FileStream fStream = new FileStream("Test#@@#.dat", FileMode.Create,
FileAccess.ReadWrite, FileShare.None, 4096, true);
// Check that the FileStream was opened asynchronously.
Console.WriteLine("fStream was {0}opened asynchronously.",
(fStream.get_IsAsync()) ? "" : "not ");
FStream classfStream = new FStream();
// Asynchronously write to the file.
IAsyncResult asyncResult = fStream.BeginWrite(writeArray, 0,
writeArray.length, new AsyncCallback(EndWriteCallback),
classfStream.new State(fStream, writeArray, manualEvent));
// Concurrently do other work and then wait
// for the data to be written and verified.
manualEvent.WaitOne(5000, false);
} //main
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