Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo FileStream.EndRead (IAsyncResult)

 

Data di pubblicazione: ottobre 2016

Attende il completamento dell'operazione di lettura asincrona in sospeso. (Considerare, in alternativa, l'uso di ReadAsync. Vedere la sezione Osservazioni).

Spazio dei nomi:   System.IO
Assembly:  mscorlib (in mscorlib.dll)

public override int EndRead(
	IAsyncResult asyncResult
)

Parametri

asyncResult
Type: System.IAsyncResult

Riferimento alla richiesta asincrona in sospeso da attendere.

Valore restituito

Type: System.Int32

Numero di byte letti dal flusso, tra 0 e il numero di byte richiesto. I flussi restituiscono 0 solo alla fine del flusso; in caso contrario, si devono bloccare fino a quando non è disponibile almeno 1 byte.

Exception Condition
ArgumentNullException

asyncResult è null.

ArgumentException

L'oggetto IAsyncResult non è stato creato chiamando BeginRead in questa classe.

InvalidOperationException

EndRead viene chiamato più volte.

IOException

Il flusso è chiuso o si è verificato un errore interno.

In the .NET Framework 4 and earlier versions, you have to use methods such as M:System.IO.FileStream.BeginRead(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object) and M:System.IO.FileStream.EndRead(System.IAsyncResult) to implement asynchronous file operations. These methods are still available in the net_v45 to support legacy code; however, the new async methods, such as M:System.IO.FileStream.ReadAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken), M:System.IO.FileStream.WriteAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken), M:System.IO.Stream.CopyToAsync(System.IO.Stream), and M:System.IO.FileStream.FlushAsync(System.Threading.CancellationToken), help you implement asynchronous file operations more easily.

EndRead must be called exactly for every call to BeginRead. Failing to end a read process before beginning another read can cause undesirable behavior such as deadlock.

This method overrides M:System.IO.Stream.EndRead(System.IAsyncResult).

EndRead can be called on every IAsyncResult from BeginRead. Calling EndRead tells you how many bytes were read from the stream. EndRead will block until the I/O operation has completed.

This code example is part of a larger example provided for the M:System.IO.FileStream.#ctor(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,System.Int32,System.Boolean) constructor.

static void EndReadCallback(IAsyncResult asyncResult)
{
    State tempState = (State)asyncResult.AsyncState;
    int readCount = tempState.FStream.EndRead(asyncResult);

    int i = 0;
    while(i < readCount)
    {
        if(tempState.ReadArray[i] != tempState.WriteArray[i++])
        {
            Console.WriteLine("Error writing data.");
            tempState.FStream.Close();
            return;
        }
    }
    Console.WriteLine("The data was written to {0} and verified.",
        tempState.FStream.Name);
    tempState.FStream.Close();

    // Signal the main thread that the verification is finished.
    tempState.ManualEvent.Set();
}

.NET Framework
Disponibile da 1.1
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Torna all'inizio
Mostra: