(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

FileStream.BeginRead-Methode

Beginnt einen asynchronen Lesevorgang. (Verwenden Sie stattdessen ReadAsync. Weitere Informationen finden Sie im Abschnitt "Hinweise".)

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

[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public override IAsyncResult BeginRead(
	byte[] array,
	int offset,
	int numBytes,
	AsyncCallback userCallback,
	Object stateObject
)

Parameter

array
Typ: System.Byte[]
Der Puffer, in den Daten gelesen werden sollen.
offset
Typ: System.Int32
Der Byteoffset im array, ab dem gelesen werden soll.
numBytes
Typ: System.Int32
Die maximale Anzahl der zu lesenden Bytes.
userCallback
Typ: System.AsyncCallback
Die Methode, die aufgerufen werden soll, wenn der asynchrone Lesevorgang abgeschlossen ist.
stateObject
Typ: System.Object
Ein vom Benutzer bereitgestelltes Objekt, das diese asynchrone Leseanforderung von anderen Anforderungen unterscheidet.

Rückgabewert

Typ: System.IAsyncResult
Ein Objekt, das auf den asynchronen Lesevorgang verweist.

AusnahmeBedingung
ArgumentException

Die Länge des Arrays minus offset ist kleiner als numBytes.

ArgumentNullException

array ist null.

ArgumentOutOfRangeException

offset oder numBytes ist negativ.

IOException

Es wurde ein asynchroner Lesevorgang über das Dateiende hinaus versucht.

In .NET Framework 4 und früheren Versionen müssen Sie Methoden wie BeginRead und EndRead verwenden, um asynchrone Dateioperationen zu implementieren. Diese Methoden sind weiterhin verfügbar in .NET Framework 4.5, Legacycode zu unterstützen; jedoch helfen die neuen asynchronen Methoden, wie ReadAsync, WriteAsync, CopyToAsync und FlushAsync, Ihnen, asynchrone Dateioperationen leicht implementieren.

EndRead muss für jeden Aufruf von BeginRead genau einmal aufgerufen werden. Wenn ein Lesevorgang nicht vor dem Beginn eines weiteren Lesevorgang beendet wird, kann unerwünschtes Verhalten (z. B. ein Deadlock) auftreten.

FileStream bietet zwei verschiedene Operationsmodi: synchrone E/A und asynchrone E/A. Beides kann verwendet werden, die zugrunde liegenden Betriebssystemressourcen könnten jedoch in nur einem dieser Modi Zugriff zulassen. Standardmäßig öffnet FileStream das Betriebssystemhandle synchron. Dies verlangsamt asynchrone Methoden in Windows. Bei asynchronen Methoden empfiehlt sich die Verwendung des FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean)-Konstruktors.

HinweisHinweis

Bestimmen Sie mithilfe der CanRead-Eigenschaft, ob die aktuelle Instanz Lesevorgänge unterstützt. Weitere Informationen finden Sie unter CanRead.

Wenn ein Stream geschlossen ist oder Sie ein ungültiges Argument übergeben, werden direkt bei BeginRead Ausnahmen ausgelöst. Fehler, die während einer asynchronen Leseanforderung auftreten, z. B. Fehler auf dem Datenträger während der E/A-Anforderung, treten im Thread des Threadpools auf und können durch einen Aufruf von EndRead angezeigt werden.

EndRead muss mit diesem IAsyncResult aufgerufen werden, um zu ermitteln, wie viele Bytes gelesen wurden.

Bei mehreren gleichzeitig erfolgenden asynchronen Anforderungen ist die Verarbeitungsreihenfolge der Anforderungen unbestimmt.

Eine Liste der Gemeinsame Dateien und Verzeichnisvorgängen, finden Sie unter Allgemeine E/A-Aufgaben.

HinweisHinweis

Das auf diesen Typ oder Member angewendete HostProtectionAttribute-Attribut besitzt den folgenden Resources-Eigenschaftswert: ExternalThreading. Das HostProtectionAttribute hat keine Auswirkungen auf Desktopanwendungen (die normalerweise durch Doppelklicken auf ein Symbol, Eingeben eines Befehls oder einer URL in einem Browser gestartet werden). Weitere Informationen finden Sie unter der HostProtectionAttribute-Klasse oder unter SQL Server-Programmierung und Hostschutzattribute.

Dieses Codebeispiel ist Teil eines umfangreicheren Beispiels für den FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean)-Konstruktor.


static void EndWriteCallback(IAsyncResult asyncResult)
{
    State tempState = (State)asyncResult.AsyncState;
    FileStream fStream = tempState.FStream;
    fStream.EndWrite(asyncResult);

    // Asynchronously read back the written data.
    fStream.Position = 0;
    asyncResult = fStream.BeginRead(
        tempState.ReadArray, 0 , tempState.ReadArray.Length, 
        new AsyncCallback(EndReadCallback), tempState);

    // Concurrently do other work, such as 
    // logging the write operation.
}


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft