NetworkStream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Avvia una scrittura asincrona in un flusso.
public:
override IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public:
override IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int size, AsyncCallback ^ callback, System::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);
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, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Public Overrides Function BeginWrite (buffer As Byte(), offset As Integer, size As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Parametri
- buffer
- Byte[]
Matrice di tipo Byte che contiene i dati da scrivere in NetworkStream.
- offset
- Int32
Posizione in buffer per iniziare a inviare i dati.
- countsize
- Int32
Numero di byte da scrivere nell'oggetto NetworkStream.
- callback
- AsyncCallback
Delegato AsyncCallback che viene eseguito al BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) termine.
- state
- Object
Oggetto che contiene eventuali dati aggiuntivi definiti dall'utente.
Restituisce
Oggetto IAsyncResult che rappresenta la chiamata asincrona.
Eccezioni
Il buffer parametro è null.
Il offset parametro è minore di 0.
oppure
Il offset parametro è maggiore della lunghezza di buffer.
oppure
Il size parametro è minore di 0.
oppure
Il size parametro è maggiore della lunghezza di buffer meno il valore del offset parametro.
L'oggetto sottostante Socket è chiuso.
oppure
Si è verificato un errore durante la scrittura nella rete.
oppure
Si è verificato un errore durante l'accesso al socket.
L'oggetto NetworkStream è chiuso.
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à dell'oggetto IAsyncResult per ottenere l'oggetto di 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.
Annotazioni
Se si riceve un oggetto IOException, controllare la InnerException proprietà per determinare se è stata causata da un oggetto SocketException. In tal caso, utilizzare la ErrorCode proprietà per ottenere il codice di errore specifico.
Le operazioni di lettura e scrittura possono essere eseguite simultaneamente in un'istanza della NetworkStream classe senza la necessità di sincronizzazione. Finché è presente un thread univoco per le operazioni di scrittura e un thread univoco per le operazioni di lettura, non ci saranno interferenze incrociate tra thread di lettura e scrittura e non è necessaria alcuna sincronizzazione.