Partilhar via


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

Definição

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(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int size, AsyncCallback? callback, 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 size, AsyncCallback callback, object state);
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
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
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[]

Uma matriz do tipo Byte que é o local na memória onde os dados lidos de NetworkStream serão armazenados.

offset
Int32

O local em buffer para começar a armazenar os dados.

sizecount
Int32

O número de bytes a serem lidos de NetworkStream.

callback
AsyncCallback

O delegado AsyncCallback que é 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 parâmetro buffer é null.

O parâmetro offset é menor que 0.

- ou -

O parâmetro offset é maior que o tamanho do parâmetro buffer.

- ou -

O size é menor que 0.

- ou -

O size é maior que o tamanho da subtração de buffer e do valor do parâmetro offset.

O Socket subjacente está fechado.

- ou -

Houve uma falha durante a leitura da rede.

- ou -

Ocorreu um erro ao acessar o soquete.

Comentários

Importante

Essa é uma API de compatibilidade, não recomendamos usar os métodos APM (Begin/End) para 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 true como para indicar que o método foi concluído de forma síncrona. Use a AsyncState propriedade do IAsyncResult para obter o 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 disponível, até o número de bytes especificado pelo size parâmetro .

Observação

Se você receber um IOException, marcar 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 será necessária.

Aplica-se a

Confira também