FileStream.BeginWrite (Método) (System.IO)

Cambiar vista:
Sin script
Biblioteca de clases de .NET Framework
FileStream.BeginWrite (Método)

Comienza una escritura asincrónica.

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

Sintaxis

Visual Basic (Declaración)
Public Overrides Function BeginWrite ( _
	array As Byte(), _
	offset As Integer, _
	numBytes As Integer, _
	userCallback As AsyncCallback, _
	stateObject As Object _
) As IAsyncResult
Visual Basic (Uso)
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)
C#
public override IAsyncResult BeginWrite (
	byte[] array,
	int offset,
	int numBytes,
	AsyncCallback userCallback,
	Object stateObject
)
C++
public:
virtual IAsyncResult^ BeginWrite (
	array<unsigned char>^ array, 
	int offset, 
	int numBytes, 
	AsyncCallback^ userCallback, 
	Object^ stateObject
) override
J#
public IAsyncResult BeginWrite (
	byte[] array, 
	int offset, 
	int numBytes, 
	AsyncCallback userCallback, 
	Object stateObject
)
JScript
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.
Excepciones

Tipo de excepción Condición

ArgumentException

La longitud de array menos offset es menor que numBytes.

ArgumentNullException

array es referencia de objeto null (Nothing en Visual Basic).

ArgumentOutOfRangeException

El valor de offset o numBytes es negativo.

NotSupportedException

La secuencia no admite escritura.

ObjectDisposedException

La secuencia está cerrada.

IOException

Se produce un error de E/S.

Comentarios

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.

NotaNota

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

Cómo: Escribir texto en un archivo

Escribir en un archivo de texto

Cómo: Escribir texto en un archivo

Leer de un archivo de texto

Cómo: Leer texto de un archivo

Anexar texto a un archivo

Cómo: Abrir y anexar a un archivo de registro

File.AppendText

FileInfo.AppendText

Cambiar de nombre o mover un archivo

File.Move

FileInfo.MoveTo

Copiar un archivo

File.Copy

FileInfo.CopyTo

Obtener el tamaño de un archivo

FileInfo.Length

Obtener los atributos de un archivo

File.GetAttributes

Establecer los atributos de un archivo

File.SetAttributes

Determinar si un archivo existe

File.Exists

Leer de un archivo binario

Cómo: Leer y escribir en un archivo de datos recién creado

Escribir en un archivo binario

Cómo: Leer y escribir en un archivo de datos recién creado

Crear un directorio

Directory.CreateDirectory

Directory.CreateDirectory

Ejemplo

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

Visual Basic
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

C#
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);
}

C++
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 );
}


J#
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

Plataformas

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.

Información de versión

.NET Framework

Compatible con: 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0, 1.0
Vea también