Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Método

Definición

Comienza una operación de escritura asincrónica. (Considere usar WriteAsync(Byte[], Int32, Int32) en su lugar).

public:
 virtual IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public virtual IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public virtual IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback callback, object state);
public virtual IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback callback, object? state);
abstract member BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overridable Function BeginWrite (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Parámetros

buffer
Byte[]

Búfer del que se van a escribir datos.

offset
Int32

Desplazamiento de bytes en buffer donde debe comenzar la escritura.

count
Int32

Número máximo de bytes que se pueden escribir.

callback
AsyncCallback

Devolución de llamada asincrónica opcional, a la que se llamará cuando haya finalizado la escritura.

state
Object

Objeto proporcionado por el usuario que distingue esta solicitud de escritura asincrónica de otras.

Devoluciones

IAsyncResult que representa la escritura asincrónica, que puede hallarse aún pendiente.

Excepciones

Se ha intentado realizar una escritura asincrónica más allá del final de la secuencia o se ha producido un error de disco.

Uno o varios argumentos no son válidos.

Se efectuó una llamada a los métodos después de cerrar la secuencia.

La implementación actual de Stream no admite la operación de escritura.

Comentarios

En .NET Framework 4 y versiones anteriores, es necesario usar métodos como BeginWrite y EndWrite para implementar operaciones de E/S 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 asincrónicas de E/S más fácilmente.

La implementación predeterminada de BeginWrite en una secuencia llama al Write método de forma sincrónica, lo que significa que Write podría bloquearse en algunas secuencias. Sin embargo, las instancias de clases como FileStream y NetworkStream admiten totalmente las operaciones asincrónicas si las instancias se han abierto de forma asincrónica. Por lo tanto, las llamadas a BeginWrite no se bloquearán en esas secuencias. Puede invalidar BeginWrite (mediante delegados asincrónicos, por ejemplo) para proporcionar un comportamiento asincrónico.

Pase el IAsyncResult devuelto por el método actual para EndWrite asegurarse de que la escritura se completa y libera los recursos de forma adecuada. EndWrite se debe llamar una vez para cada llamada a BeginWrite. Para ello, use el mismo código que llamó BeginWrite a o en una devolución de llamada pasada a BeginWrite. Si se produce un error durante una escritura asincrónica, no se producirá una excepción hasta EndWrite que se llame a con el IAsyncResult devuelto por este método.

Si se puede escribir una secuencia, al final de la secuencia se expande la secuencia.

La posición actual de la secuencia se actualiza cuando se emite la lectura o escritura asincrónica, no cuando se completa la operación de E/S. Varias solicitudes asincrónicas simultáneas representan el orden de finalización de la solicitud incierta.

Use la CanWrite propiedad para determinar si la instancia actual admite la escritura.

Si se cierra una secuencia o se pasa un argumento no válido, las excepciones se inician inmediatamente desde BeginWrite. Los errores que se producen durante una solicitud de escritura asincrónica, como un error de disco durante la solicitud de E/S, se producen en el subproceso del grupo de subprocesos y producen excepciones al llamar a EndWrite.

Se aplica a

Consulte también