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

Definição

Inicia uma operação de escrita assíncrona. (Considere usar WriteAsync(Byte[], Int32, Int32) em vez disso.)

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 para escrever dados.

offset
Int32

O deslocamento de bytes para buffer dentro de onde se deve começar a escrever.

count
Int32

O número máximo de bytes a escrever.

callback
AsyncCallback

Um callback assíncrono opcional, a ser chamado quando a escrita estiver concluída.

state
Object

Um objeto fornecido pelo utilizador que distingue este pedido de escrita assíncrono particular de outros pedidos.

Devoluções

E IAsyncResult que representa a escrita assíncrona, que ainda pode estar pendente.

Exceções

Tentou uma escrita assíncrona para além do fim do fluxo, ou ocorre um erro no disco.

Um ou mais dos argumentos são inválidos.

Os métodos foram chamados após o encerramento do riacho.

A implementação atual Stream não suporta a operação de escrita.

Observações

No .NET Framework 4 e versões anteriores, é necessário usar métodos como BeginWrite e EndWrite para implementar operações de E/S assíncronas. Estes métodos ainda estão disponíveis no .NET Framework 4.5 para suportar código legado; no entanto, os novos métodos assíncronos, como ReadAsync, WriteAsync, CopyToAsync e FlushAsync, ajudam a implementar operações de E/S assíncronas mais facilmente.

A implementação padrão de BeginWrite on a stream chama o Write método de forma síncrona, o que significa que pode Write bloquear em alguns streams. No entanto, instâncias de classes como FileStream e NetworkStream suportam totalmente operações assíncronas se as instâncias tiverem sido abertas assíncronas. Portanto, as chamadas para BeginWrite não bloqueiam nesses fluxos. Pode sobrescrever BeginWrite (usando delegados assíncronos, por exemplo) para fornecer comportamento assíncrono.

Passe o IAsyncResult retorno pelo método atual para EndWrite garantir que a escrita se completa e liberta recursos adequadamente. EndWrite deve ser chamada uma vez por cada chamada para BeginWrite. Pode fazer isto usando o mesmo código que chamou BeginWrite ou num callback passado para BeginWrite. Se ocorrer um erro durante uma escrita assíncrona, uma exceção não será lançada até EndWrite ser chamada com o IAsyncResult devolvido por este método.

Se um fluxo for escrivo, a escrita no final do fluxo expande o fluxo.

A posição atual no fluxo é atualizada quando emites a leitura ou escrita assíncrona, não quando a operação de I/O termina. Múltiplos pedidos assíncronos simultâneos tornam a ordem de conclusão do pedido incerta.

Use a CanWrite propriedade para determinar se a instância atual suporta escrita.

Se um fluxo estiver fechado ou se passar um argumento inválido, exceções são lançadas imediatamente a partir de BeginWrite. Erros que ocorrem durante um pedido de escrita assíncrono, como uma falha de disco durante o pedido de E/S, ocorrem no thread pool de threads e lançam exceções ao chamar EndWrite.

Aplica-se a

Ver também