NetworkStream.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 leitura assíncrona a partir do NetworkStream.
public:
override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int size, AsyncCallback ^ callback, System::Object ^ state);
public override IAsyncResult BeginRead(byte[] buffer, int offset, int size, AsyncCallback callback, object state);
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginRead (buffer As Byte(), offset As Integer, size As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Parâmetros
- buffer
- Byte[]
Um array do tipo Byte que é a localização na memória para armazenar dados lidos a partir do NetworkStream.
- offset
- Int32
A localização é buffer para começar a armazenar os dados.
- size
- Int32
O número de bytes a ler a partir do NetworkStream.
- callback
- AsyncCallback
O AsyncCallback delegado que é executado quando BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) termina.
- state
- Object
Um objeto que contenha quaisquer dados adicionais definidos pelo utilizador.
Devoluções
E IAsyncResult que representa a chamada assíncrona.
Exceções
O buffer parâmetro é null.
O offset parâmetro é inferior a 0.
-ou-
O offset parâmetro é maior do que o comprimento do buffer parámetro.
-ou-
O size é inferior a 0.
-ou-
É size maior do que o comprimento de buffer menos o valor do offset parâmetro.
O subjacente Socket é fechado.
-ou-
Houve uma falha ao ler na rede.
-ou-
Ocorreu um erro ao aceder ao soquete.
Está NetworkStream fechado.
Observações
Importante
Isto é uma API de compatibilidade. Não recomendamos o uso dos métodos APM (Início/Fim) para novos desenvolvimentos. Em vez disso, use os equivalentes baseados em tarefas.
Pode enviar um callback que implementa AsyncCallback para BeginRead ser notificado sobre a conclusão da operação. Note que, se a pilha de rede subjacente completar a operação de forma síncrona, o callback será executado em linha, durante a chamada para BeginRead. Neste caso, a CompletedSynchronously propriedade no retorno IAsyncResult será definida para true indicar que o método foi concluído de forma síncrona. Use a AsyncState propriedade de para IAsyncResult obter o objeto de estado passado para o BeginRead método.
A BeginRead operação deve ser realizada chamando o EndRead método. Normalmente, o método é invocado pelo delegado fornecido AsyncCallback . EndRead irá bloquear o thread que chama até que a operação seja concluída.
A operação lê tantos dados quanto estiver disponível, até ao número de bytes especificado pelo count parâmetro.
Note
Se receber um IOException, verifique a InnerException propriedade para determinar se foi causado por um SocketException. Se sim, use a ErrorCode propriedade para obter o código de erro específico.
Operações de leitura e escrita podem ser realizadas simultaneamente numa instância da NetworkStream classe sem necessidade de sincronização. Desde que exista um thread único para as operações de escrita e um único para as operações de leitura, não haverá interferência cruzada entre threads de leitura e escrita e não será necessária sincronização.