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

Definição

Inicia uma operação de gravação assíncrona.Begins an asynchronous write operation. (Considere o uso de WriteAsync(Byte[], Int32, Int32) em seu lugar.)(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

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);
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[]

O buffer do qual os dados serão gravados.The buffer to write data from.

offset
Int32

O deslocamento de bytes no buffer no qual a gravação deve iniciar.The byte offset in buffer from which to begin writing.

count
Int32

O número máximo de bytes a serem gravados.The maximum number of bytes to write.

callback
AsyncCallback

Um retorno de chamada assíncrona opcional, a ser chamada quando a operação de gravação for concluída.An optional asynchronous callback, to be called when the write is complete.

state
Object

Um objeto fornecido pelo usuário que distingue essa solicitação de gravação assíncrona específica de outras solicitações.A user-provided object that distinguishes this particular asynchronous write request from other requests.

Retornos

Um IAsyncResult que representa a gravação assíncrona, que ainda pode estar pendente.An IAsyncResult that represents the asynchronous write, which could still be pending.

Exceções

Houve uma tentativa de gravação assíncrona após o final do fluxo ou ocorreu um erro de disco.Attempted an asynchronous write past the end of the stream, or a disk error occurs.

Um ou mais argumentos são inválidos.One or more of the arguments is invalid.

Foram chamados métodos depois que o fluxo foi fechado.Methods were called after the stream was closed.

A implementação Stream atual não dá suporte à operação de gravação.The current Stream implementation does not support the write operation.

Comentários

No .NET Framework 4, e em versões anteriores, você precisa usar métodos como BeginWrite e EndWrite para implementar operações de E/S assíncronas.In the .NET Framework 4 and earlier versions, you have to use methods such as BeginWrite and EndWrite to implement asynchronous I/O operations. Esses métodos .NET Framework 4.5.NET Framework 4.5 ainda estão disponíveis no para dar suporte ao código herdado; no entanto, os novos métodos assíncronos, ReadAsync WriteAsync CopyToAsynccomo FlushAsync,, e, ajudam você a implementar operações de e/s assíncronas com mais facilidade.These methods are still available in the .NET Framework 4.5.NET Framework 4.5 to support legacy code; however, the new async methods, such as ReadAsync, WriteAsync, CopyToAsync, and FlushAsync, help you implement asynchronous I/O operations more easily.

A implementação padrão de BeginWrite em um fluxo chama o Write método de forma síncrona, o Write que significa que pode bloquear em alguns fluxos.The default implementation of BeginWrite on a stream calls the Write method synchronously, which means that Write might block on some streams. No entanto, as instâncias de FileStream classes NetworkStream , como e oferecem suporte total a operações assíncronas, se as instâncias tiverem sido abertas de forma assíncrona.However, instances of classes such as FileStream and NetworkStream fully support asynchronous operations if the instances have been opened asynchronously. Portanto, as chamadas BeginWrite para não serão bloqueadas nesses fluxos.Therefore, calls to BeginWrite will not block on those streams. Você pode substituir BeginWrite (usando delegados assíncronos, por exemplo) para fornecer comportamento assíncrono.You can override BeginWrite (by using async delegates, for example) to provide asynchronous behavior.

Passe o IAsyncResult retornado pelo método atual para EndWrite para garantir que a gravação seja concluída e libere recursos adequadamente.Pass the IAsyncResult returned by the current method to EndWrite to ensure that the write completes and frees resources appropriately. EndWritedeve ser chamado uma vez para cada chamada BeginWritepara.EndWrite must be called once for every call to BeginWrite. Isso pode ser feito usando o mesmo código chamado BeginWrite ou em um retorno de chamada passado para. BeginWriteYou can do this either by using the same code that called BeginWrite or in a callback passed to BeginWrite. Se ocorrer um erro durante uma gravação assíncrona, uma exceção não será lançada até EndWrite que seja chamada com IAsyncResult o retornado por esse método.If an error occurs during an asynchronous write, an exception will not be thrown until EndWrite is called with the IAsyncResult returned by this method.

Se um fluxo for gravável, a gravação no final do fluxo expandirá o fluxo.If a stream is writable, writing at the end of the stream expands the stream.

A posição atual no fluxo é atualizada quando você emite a leitura ou gravação assíncrona, não quando a operação de e/s é concluída.The current position in the stream is updated when you issue the asynchronous read or write, not when the I/O operation completes. Várias solicitações assíncronas simultâneas tornam a ordem de conclusão da solicitação incerta.Multiple simultaneous asynchronous requests render the request completion order uncertain.

Use a CanWrite propriedade para determinar se a instância atual oferece suporte à gravação.Use the CanWrite property to determine whether the current instance supports writing.

Se um fluxo for fechado ou você passar um argumento inválido, as exceções serão geradas BeginWriteimediatamente do.If a stream is closed or you pass an invalid argument, exceptions are thrown immediately from BeginWrite. Os erros que ocorrem durante uma solicitação de gravação assíncrona, como uma falha de disco durante a solicitação de e/s, ocorrem no thread do pool de threads e geram exceções ao chamar EndWrite.Errors that occur during an asynchronous write request, such as a disk failure during the I/O request, occur on the thread pool thread and throw exceptions when calling EndWrite.

Aplica-se a

Veja também