Condividi tramite


CryptoStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Metodo

Definizione

Avvia un'operazione di lettura asincrona. Prendere invece in considerazione l'uso ReadAsync di .

public:
 override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state);
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginRead (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Parametri

buffer
Byte[]

Buffer in cui leggere i dati.

offset
Int32

Offset di byte in in buffer corrispondenza del quale iniziare a scrivere i dati letti dal flusso.

count
Int32

Numero massimo di byte da leggere.

callback
AsyncCallback

Callback asincrono facoltativo da chiamare al termine della lettura.

state
Object

Oggetto fornito dall'utente che distingue questa particolare richiesta di lettura asincrona da altre richieste.

Restituisce

Oggetto IAsyncResult che rappresenta la lettura asincrona, che potrebbe essere ancora in sospeso.

Eccezioni

Tentativo di lettura asincrona oltre la fine del flusso o si è verificato 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 lettura.

Commenti

Importante

A partire da .NET 6, questo metodo potrebbe non leggere il numero di byte richiesto. Per altre informazioni, vedere Letture di byte parziali e zero in DeflateStream, GZipStream e CryptoStream.

In .NET Framework 4 e versioni precedenti è necessario usare metodi come BeginRead e EndRead per implementare operazioni di I/O asincrone. Questi metodi sono ancora disponibili nelle versioni correnti 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.

Passare il IAsyncResult valore restituito al EndRead metodo del flusso per determinare il numero di byte letti e rilasciare le risorse del sistema operativo usate per la lettura. EndRead deve essere chiamato una volta per ogni chiamata a BeginRead. A tale scopo, è possibile usare lo stesso codice chiamato BeginRead o in un callback passato a BeginRead.

La posizione corrente nel flusso viene aggiornata quando viene eseguita 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 CanRead proprietà per determinare se l'istanza corrente supporta la lettura.

Se un flusso viene chiuso o si passa un argomento non valido, le eccezioni vengono generate immediatamente da BeginRead. Gli errori che si verificano durante una richiesta di lettura 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 EndRead.

Si applica a