Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

FileStream.EndRead-Methode: (IAsyncResult)

 

Veröffentlicht: Oktober 2016

Wartet, bis der ausstehende asynchrone Lesevorgang abgeschlossen ist. (Verwenden Sie stattdessen ReadAsync. Weitere Informationen finden Sie im Abschnitt "Hinweise".)

Namespace:   System.IO
Assembly:  mscorlib (in mscorlib.dll)

public override int EndRead(
	IAsyncResult asyncResult
)

Parameter

asyncResult
Type: System.IAsyncResult

Der Verweis auf die ausstehende asynchrone Anforderung, die abgewartet werden soll.

Rückgabewert

Type: System.Int32

Die Anzahl der aus dem Stream gelesenen Bytes. Diese Anzahl kann zwischen 0 und der Anzahl der angeforderten Bytes liegen. Streams geben nur am Ende des Streams 0 zurück, andernfalls sollten sie blockieren, bis mindestens 1 Byte verfügbar ist.

Exception Condition
ArgumentNullException

asyncResult ist null.

ArgumentException

Dieses IAsyncResult-Objekt wurde nicht durch Aufrufen von BeginRead für diese Klasse erstellt.

InvalidOperationException

EndRead wird mehrmals aufgerufen.

IOException

Der Stream ist geschlossen, oder ein interner Fehler ist aufgetreten.

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
Verfügbar seit 1.1
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Zurück zum Anfang
Anzeigen: