Condividi tramite


NetworkStream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Metodo

Definizione

Avvia una scrittura asincrona in un flusso.

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

Parametri

buffer
Byte[]

Matrice di tipo Byte che contiene i dati da scrivere nella classe NetworkStream.

offset
Int32

Posizione in buffer da cui avviare l'invio dei dati.

sizecount
Int32

Numero di byte da scrivere nella classe NetworkStream.

callback
AsyncCallback

Il delegato AsyncCallback eseguito dopo il completamento del metodo BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object).

state
Object

Oggetto che contiene i dati aggiuntivi definiti dall'utente.

Restituisce

Oggetto IAsyncResult che rappresenta la chiamata asincrona.

Eccezioni

Il valore del parametro buffer è null.

Il parametro offset è minore di 0.

-oppure-

Il parametro offset è maggiore della lunghezza di buffer.

-oppure-

Il parametro size è minore di 0.

-oppure-

Il parametro size è maggiore della lunghezza di buffer meno il valore del parametro offset.

L'oggetto Socket sottostante è chiuso.

-oppure-

Si è verificato un errore durante la scrittura nella rete.

-oppure-

Si è verificato un errore durante l'accesso al socket.

Commenti

Importante

Si tratta di un'API di compatibilità, non è consigliabile usare i metodi APM (Begin/End) per il nuovo sviluppo. Usare invece gli equivalenti basati su attività.

È possibile passare un callback che implementa AsyncCallback a BeginWrite per ricevere una notifica sul completamento dell'operazione. Si noti che se lo stack di rete sottostante completa l'operazione in modo sincrono, il callback verrà eseguito inline, durante la chiamata a BeginWrite. In questo caso, la CompletedSynchronously proprietà sull'oggetto restituito verrà impostata IAsyncResult su true per indicare che il metodo è stato completato in modo sincrono. Utilizzare la AsyncState proprietà di IAsyncResult per ottenere l'oggetto stato passato al BeginWrite metodo .

L'operazione BeginWrite deve essere completata chiamando il EndWrite metodo . In genere, il metodo viene richiamato dal delegato fornito AsyncCallback . EndWrite blocca il thread chiamante fino al completamento dell'operazione.

Nota

Se si riceve un IOExceptionoggetto , controllare la InnerException proprietà per determinare se è stata causata da un oggetto SocketException. In tal caso, usare la ErrorCode proprietà per ottenere il codice di errore specifico.

Le operazioni di lettura e scrittura possono essere eseguite contemporaneamente in un'istanza della NetworkStream classe senza la necessità di sincronizzazione. Purché sia presente un thread univoco per le operazioni di scrittura e un thread univoco per le operazioni di lettura, non vi sarà alcuna interferenza incrociata tra thread di lettura e scrittura e non è necessaria alcuna sincronizzazione.

Si applica a

Vedi anche