Stream.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 un'operazione di scrittura asincrona. Prendere invece in considerazione l'uso WriteAsync(Byte[], Int32, Int32) di .
public:
virtual IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public virtual IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public virtual IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state);
public virtual IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object? state);
abstract member BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overridable Function BeginWrite (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Parametri
- buffer
- Byte[]
Buffer da cui scrivere i dati.
- offset
- Int32
Offset di byte in buffer da cui iniziare la scrittura.
- count
- Int32
Numero massimo di byte da scrivere.
- callback
- AsyncCallback
Callback asincrono facoltativo da chiamare al termine della scrittura.
- state
- Object
Oggetto fornito dall'utente che distingue questa particolare richiesta di scrittura asincrona da altre richieste.
Restituisce
Oggetto IAsyncResult che rappresenta la scrittura asincrona, che potrebbe essere ancora in sospeso.
Eccezioni
Tentativo di scrittura asincrona oltre la fine del flusso o si verifica un errore del disco.
Uno o più argomenti non sono validi.
I metodi sono stati chiamati dopo la chiusura del flusso.
L'implementazione corrente Stream non supporta l'operazione di scrittura.
Commenti
In .NET Framework 4 e versioni precedenti è necessario usare metodi come BeginWrite e EndWrite per implementare operazioni di I/O asincrone. Questi metodi sono ancora disponibili in .NET Framework 4.5 per supportare il codice legacy; Tuttavia, i nuovi metodi asincroni, ad esempio ReadAsync, CopyToAsyncWriteAsync, e FlushAsync, consentono di implementare più facilmente operazioni di I/O asincrone.
L'implementazione predefinita di BeginWrite in un flusso chiama il Write metodo in modo sincrono, il che significa che Write potrebbe bloccarsi in alcuni flussi. Tuttavia, le istanze di classi come FileStream e NetworkStream supportano completamente le operazioni asincrone se le istanze sono state aperte in modo asincrono. Pertanto, le chiamate a BeginWrite non verranno bloccate su tali flussi. È possibile eseguire l'override BeginWrite (usando ad esempio delegati asincroni) per fornire un comportamento asincrono.
Passare l'oggetto IAsyncResult restituito dal metodo corrente per EndWrite assicurarsi che la scrittura venga completata e libera le risorse in modo appropriato.
EndWrite deve essere chiamato una volta per ogni chiamata a BeginWrite. A tale scopo, è possibile usare lo stesso codice chiamato BeginWrite o in un callback passato a BeginWrite. Se si verifica un errore durante una scrittura asincrona, non verrà generata un'eccezione finché EndWrite non viene chiamata con l'oggetto IAsyncResult restituito da questo metodo.
Se un flusso è scrivibile, la scrittura alla fine del flusso espande il flusso.
La posizione corrente nel flusso viene aggiornata quando si rilascia la lettura asincrona o la scrittura, non quando l'operazione di I/O viene completata. Più richieste asincrone simultanee rendono incerto l'ordine di completamento della richiesta.
Utilizzare la CanWrite proprietà per determinare se l'istanza corrente supporta la scrittura.
Se un flusso viene chiuso o si passa un argomento non valido, le eccezioni vengono generate immediatamente da BeginWrite. Gli errori che si verificano durante una richiesta di scrittura asincrona, ad esempio un errore del disco durante la richiesta di I/O, si verificano nel thread del pool di thread e generano eccezioni quando si chiama EndWrite.