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

Definizione

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

IAsyncResult

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 .

Si applica a

Vedi anche