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.
Inizia un'operazione di scrittura asincrona. Si consiglia di usare WriteAsync(Byte[], Int32, Int32).
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 dei byte in buffer
da cui iniziare la scrittura.
- count
- Int32
Numero massimo di byte da scrivere.
- callback
- AsyncCallback
Callback asincrono facoltativo, da chiamare quando la scrittura è completa.
- state
- Object
Oggetto fornito dall'utente che distingue questa specifica richiesta di scrittura asincrona da altre richieste.
Restituisce
Oggetto IAsyncResult
che rappresenta la scrittura asincrona, che può essere ancora in sospeso.
Eccezioni
È stato eseguito un tentativo di scrittura asincrona oltre la fine del flusso o si è verificato un errore del disco.
Uno o più argomenti non sono validi.
Sono stati chiamati dei metodi dopo la chiusura del flusso.
L'implementazione corrente di Stream
non supporta l'operazione di scrittura.
Commenti
In .NET Framework 4 e versioni precedenti è necessario usare metodi quali 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 , , e , consentono di implementare più facilmente operazioni ReadAsync WriteAsync di CopyToAsync FlushAsync I/O asincrone.
L'implementazione predefinita di in un flusso chiama il metodo in modo sincrono, il che significa che potrebbe BeginWrite
Write Write
bloccarsi in alcuni flussi. Tuttavia, le istanze di classi come e FileStream
NetworkStream
supportano completamente le operazioni asincrone se le istanze sono state aperte in modo asincrono. Pertanto, le chiamate BeginWrite
a non si bloccheranno su tali flussi. È possibile eseguire BeginWrite
l'override (ad esempio usando delegati asincroni) per fornire un comportamento asincrono.
Passare l'oggetto restituito dal metodo corrente a per assicurarsi che la scrittura sia IAsyncResult
stata completata e libera le risorse in modo EndWrite appropriato. EndWrite deve essere chiamato una volta per ogni chiamata a BeginWrite . È possibile eseguire questa operazione usando lo stesso codice che ha chiamato BeginWrite
o in un callback passato a BeginWrite
. Se si verifica un errore durante una scrittura asincrona, non verrà generata un'eccezione finché non viene chiamato con EndWrite
IAsyncResult
l'oggetto 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 esegue la lettura o la scrittura asincrona, non al termine dell'operazione di I/O. 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 è 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
.