NetworkStream.BeginRead(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 leitura assíncrona 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[]
Uma matriz de tipo Byte que é o local na memória para armazenar dados lidos da NetworkStream.
- offset
- Int32
O local no buffer qual começar a armazenar os dados.
- size
- Int32
O número de bytes a serem lidos da NetworkStream.
- callback
- AsyncCallback
O AsyncCallback delegado executado quando BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) concluído.
- state
- Object
Um objeto que contém dados adicionais definidos pelo usuário.
Retornos
Um IAsyncResult que representa a chamada assíncrona.
Exceções
O buffer parâmetro é null.
O offset parâmetro é menor que 0.
-ou-
O offset parâmetro é maior que o comprimento do buffer paramatador.
-ou-
O size é menor que 0.
-ou-
O size é maior que o comprimento de buffer menos o valor do offset parâmetro.
O subjacente Socket está fechado.
-ou-
Houve uma falha durante a leitura da rede.
-ou-
Erro ao acessar o soquete.
O NetworkStream está fechado.
Comentários
Importante
Essa é uma API de compatibilidade. Não recomendamos usar os métodos APM (Begin/End) para o novo desenvolvimento. Em vez disso, use os equivalentes baseados em tarefa.
Você pode passar um retorno de chamada que implementa AsyncCallback para BeginRead ser notificado sobre a conclusão da operação. Observe que, se a pilha de rede subjacente concluir a operação de forma síncrona, o retorno de chamada será executado embutido durante a chamada para BeginRead. Nesse caso, a CompletedSynchronously propriedade no retornado IAsyncResult será definida para true indicar que o método foi concluído de forma síncrona. Use a AsyncState propriedade do IAsyncResult objeto de estado passado para o BeginRead método.
A BeginRead operação deve ser concluída chamando o EndRead método. Normalmente, o método é invocado pelo delegado fornecido AsyncCallback . EndRead bloqueará o thread de chamada até que a operação seja concluída.
A operação lê o máximo de dados que estiver disponível, até o número de bytes especificados count pelo parâmetro.
Note
Se você receber um IOException, verifique a InnerException propriedade para determinar se ela foi causada por um SocketException. Nesse caso, use a ErrorCode propriedade para obter o código de erro específico.
As operações de leitura e gravação podem ser executadas simultaneamente em uma instância da NetworkStream classe sem a necessidade de sincronização. Desde que haja um thread exclusivo para as operações de gravação e um thread exclusivo para as operações de leitura, não haverá nenhuma interferência cruzada entre threads de leitura e gravação e nenhuma sincronização é necessária.