NetworkStream.BeginWrite(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 gravação assíncrona em um fluxo.
public:
override IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int size, AsyncCallback ^ callback, System::Object ^ state);
public:
override IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public override IAsyncResult BeginWrite (byte[] buffer, int offset, int size, AsyncCallback? callback, object? state);
public override IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public override IAsyncResult BeginWrite (byte[] buffer, int offset, int size, AsyncCallback callback, object state);
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginWrite (buffer As Byte(), offset As Integer, size As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Public Overrides Function BeginWrite (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 contém os dados a serem gravados no NetworkStream.
- offset
- Int32
O local em buffer
para onde começar a enviar os dados.
- sizecount
- Int32
O número de bytes a serem gravados no NetworkStream.
- callback
- AsyncCallback
O delegado AsyncCallback que é executado quando BeginWrite(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 de buffer
.
- ou -
O parâmetro size
é menor que 0.
- ou -
O parâmetro size
é maior que o tamanho de buffer
subtraído do valor do parâmetro offset
.
O Socket subjacente está fechado.
- ou -
Houve uma falha durante a gravação na rede.
- ou -
Ocorreu um 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 novo desenvolvimento. Em vez disso, use os equivalentes baseados em tarefa.
Você pode passar um retorno de chamada que implementa AsyncCallback para BeginWrite 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 BeginWrite. Nesse caso, a CompletedSynchronously propriedade no retornado IAsyncResult será definida como true
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 BeginWrite método .
A BeginWrite operação deve ser concluída chamando o EndWrite método . Normalmente, o método é invocado pelo delegado fornecido AsyncCallback . EndWrite bloqueará o thread de chamada até que a operação seja concluída.
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.