CryptoStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Inicia uma operação de leitura assíncrona. (Considere usar ReadAsync em vez disso.)
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);
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 em buffer que começar a escrever dados lidos do fluxo.
- count
- Int32
O número máximo de bytes a ler.
- callback
- AsyncCallback
Um callback assíncrono opcional, a ser chamado quando a leitura estiver completa.
- state
- Object
Um objeto fornecido pelo utilizador que distingue este pedido de leitura assíncrono particular de outros pedidos.
Devoluções
Um IAsyncResult que representa a leitura assíncrona, que ainda pode estar pendente.
Exceções
Tentou uma leitura assíncrona para além do fim do fluxo, ou ocorreu 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 leitura.
Observações
Importante
A partir do .NET 6, este método pode não ler tantos bytes quanto os solicitados. Para mais informações, consulte Leituras parciais e de zero bytes no DeflateStream, GZipStream e CryptoStream.
No .NET Framework 4 e versões anteriores, você precisa usar métodos como BeginRead e EndRead implementar operações de E/S assíncronas. Estes métodos ainda estão disponíveis nas versões atuais 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 I/O assíncronas mais facilmente.
Passar o IAsyncResult valor de retorno ao EndRead método do fluxo para determinar quantos bytes foram lidos e libertar os recursos do sistema operativo usados para leitura.
EndRead deve ser chamada uma vez por cada chamada para BeginRead. Pode fazer isto usando o mesmo código que chamou BeginRead ou num callback passado para BeginRead.
A posição atual no fluxo é atualizada quando a leitura ou escrita assíncrona é emitida, 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 CanRead propriedade para determinar se a instância atual suporta leitura.
Se um fluxo estiver fechado ou se passar um argumento inválido, exceções são lançadas imediatamente a partir de BeginRead. Erros que ocorrem durante um pedido de leitura 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 EndRead.