Compartilhar via


CryptoStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Método

Definição

Inicia uma operação de leitura assíncrona. (Considere o uso de ReadAsync em seu lugar.)

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

Parâmetros

buffer
Byte[]

O buffer para ler os dados.

offset
Int32

O deslocamento de bytes no buffer no qual será iniciada a gravação da leitura de dados no fluxo.

count
Int32

O número máximo de bytes a serem lidos.

callback
AsyncCallback

Um retorno de chamada assíncrono opcional, a ser chamado quando a leitura for concluída.

state
Object

Um objeto fornecido pelo usuário que distingue essa solicitação de leitura assíncrona específica de outras solicitações.

Retornos

Um IAsyncResult que representa a operação de leitura assíncrona, que ainda pode estar pendente.

Exceções

Houve uma tentativa de leitura 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 leitura.

Comentários

Importante

A partir do .NET 6, esse método pode não ler tantos bytes quanto foram solicitados. Para obter mais informações, consulte Leituras parciais e de bytes zero em DeflateStream, GZipStream e CryptoStream.

No .NET Framework 4, e em versões anteriores, você precisa usar métodos como BeginRead e EndRead 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 valor retornado para o EndRead método do fluxo para determinar quantos bytes foram lidos e liberar os recursos do sistema operacional usados para leitura. EndRead deve ser chamado uma vez para cada chamada para BeginRead. Você pode fazer isso usando o mesmo código que chamou BeginRead ou em um retorno de chamada passado para BeginRead.

A posição atual no fluxo é atualizada quando a leitura ou gravação assíncrona é emitida, 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 CanRead propriedade para determinar se a instância atual dá suporte à leitura.

Se um fluxo for fechado ou você passar um argumento inválido, as exceções serão lançadas imediatamente de BeginRead. Erros que ocorrem durante uma solicitação de leitura 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 EndRead.

Aplica-se a