CryptoStream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Inicia uma operação de gravação assíncrona. (Considere o uso de WriteAsync em seu lugar.)
public:
override IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public override IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public override IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback callback, object state);
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides 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.
- offset
- Int32
O deslocamento de bytes no buffer
no qual a gravação deve iniciar.
- count
- Int32
O número máximo de bytes a serem gravados.
- callback
- AsyncCallback
Um retorno de chamada assíncrona opcional, a ser chamada quando a operação de gravação for concluída.
- state
- Object
Um objeto fornecido pelo usuário que distingue essa solicitação de gravação assíncrona específica de outras solicitações.
Retornos
Um IAsyncResult
que representa a gravação assíncrona, que ainda pode estar pendente.
Exceções
Houve uma tentativa de gravação assíncrona após o final do fluxo ou ocorreu um erro de disco.
Um ou mais argumentos são inválidos.
Foram chamados métodos depois que o fluxo foi fechado.
A implementação Stream
atual não dá suporte à operação de gravação.
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. Esses métodos ainda estão disponíveis nas versões atuais para dar suporte ao código herdado; no entanto, os novos métodos assíncronos, como ReadAsync, WriteAsyncCopyToAsync, e FlushAsync, ajudam você a implementar operações de E/S assíncronas com mais facilidade.
Passe o IAsyncResult
retornado pelo método atual para para EndWrite garantir que a gravação seja concluída e libere os recursos adequadamente.
EndWrite deve ser chamado uma vez para cada chamada para BeginWrite. Você pode fazer isso usando o mesmo código que chamou BeginWrite
ou em um retorno de chamada passado para BeginWrite
. Se ocorrer um erro durante uma gravação assíncrona, uma exceção não será gerada até EndWrite
que seja chamada com o IAsyncResult
retornado por esse método.
Se um fluxo for gravável, gravar no final do fluxo expandirá o fluxo.
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. Várias solicitações assíncronas simultâneas tornam a ordem de conclusão da solicitação incerta.
Use a CanWrite propriedade para determinar se a instância atual dá suporte à gravação.
Se um fluxo for fechado ou você passar um argumento inválido, as exceções serão lançadas imediatamente de BeginWrite
. 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
.