Freigeben über


FileStream.BeginRead-Methode

Beginnt einen asynchronen Lesevorgang.

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

Syntax

'Declaration
Public Overrides Function BeginRead ( _
    array As Byte(), _
    offset As Integer, _
    numBytes As Integer, _
    userCallback As AsyncCallback, _
    stateObject As Object _
) As IAsyncResult
'Usage
Dim instance As FileStream
Dim array As Byte()
Dim offset As Integer
Dim numBytes As Integer
Dim userCallback As AsyncCallback
Dim stateObject As Object
Dim returnValue As IAsyncResult

returnValue = instance.BeginRead(array, offset, numBytes, userCallback, stateObject)
public override IAsyncResult BeginRead (
    byte[] array,
    int offset,
    int numBytes,
    AsyncCallback userCallback,
    Object stateObject
)
public:
virtual IAsyncResult^ BeginRead (
    array<unsigned char>^ array, 
    int offset, 
    int numBytes, 
    AsyncCallback^ userCallback, 
    Object^ stateObject
) override
public IAsyncResult BeginRead (
    byte[] array, 
    int offset, 
    int numBytes, 
    AsyncCallback userCallback, 
    Object stateObject
)
public override function BeginRead (
    array : byte[], 
    offset : int, 
    numBytes : int, 
    userCallback : AsyncCallback, 
    stateObject : Object
) : IAsyncResult

Parameter

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

Rückgabewert

Ein IAsyncResult, das auf den asynchronen Lesevorgang verweist.

Ausnahmen

Ausnahmetyp Bedingung

ArgumentException

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

ArgumentNullException

array ist NULL (Nothing in Visual Basic).

ArgumentOutOfRangeException

offset oder numBytes ist negativ.

IOException

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

Hinweise

EndRead muss genau für jeden Aufruf von BeginRead 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. Obwohl beide verwendet werden können, ermöglichen die Ressourcen des zugrunde liegenden Betriebssystems eventuell nur einen dieser Modi. 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.

Hinweis

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.

Hinweis

Unter Windows werden alle E/A-Operationen mit einer Größe von weniger als 64 KB zum Zweck der Leistungssteigerung im synchronen Modus durchgeführt. Asynchrone E/A kann die Leistung bei Puffergrößen unter 64 KB verringern.

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.

In der folgenden Tabelle sind Beispiele für andere typische oder verwandte E/A-Aufgaben aufgeführt.

Aufgabe

Beispiel in diesem Thema

Erstellen einer Textdatei.

Gewusst wie: Schreiben von Text in eine Datei

In eine Textdatei schreiben.

Gewusst wie: Schreiben von Text in eine Datei

Aus einer Textdatei lesen.

Gewusst wie: Lesen aus einer Textdatei

Text an eine Datei anfügen.

Gewusst wie: Öffnen und Anfügen an eine Protokolldatei

File.AppendText

FileInfo.AppendText

Eine Datei umbenennen oder verschieben.

File.Move

FileInfo.MoveTo

Eine Datei kopieren.

File.Copy

FileInfo.CopyTo

Die Größe einer Datei abrufen.

FileInfo.Length

Die Attribute einer Datei abrufen.

File.GetAttributes

Die Attribute einer Datei festlegen.

File.SetAttributes

Bestimmen, ob eine Datei vorhanden ist.

File.Exists

Aus einer Binärdatei lesen.

Gewusst wie: Lesen und Schreiben einer neu erstellten Datendatei

In eine Binärdatei schreiben.

Gewusst wie: Lesen und Schreiben einer neu erstellten Datendatei

Ein Verzeichnis erstellen.

Directory.CreateDirectory

Directory.CreateDirectory

Beispiel

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

Private Shared Sub EndWriteCallback(asyncResult As IAsyncResult)
    Dim tempState As State = _
        DirectCast(asyncResult.AsyncState, State)
    Dim fStream As FileStream = tempState.FStream
    fStream.EndWrite(asyncResult)

    ' Asynchronously read back the written data.
    fStream.Position = 0
    asyncResult = fStream.BeginRead( _ 
        tempState.ReadArray, 0 , tempState.ReadArray.Length, _
        AddressOf EndReadCallback, tempState)

    ' Concurrently do other work, such as 
    ' logging the write operation.
End Sub
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.
}
   static void EndWriteCallback( IAsyncResult^ asyncResult )
   {
      State^ tempState = dynamic_cast<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, gcnew AsyncCallback( &FStream::EndReadCallback ), tempState );
      
      // Concurrently do other work, such as 
      // logging the write operation.
   }

};

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

    // Asynchronously read back the written data.
    fStream.set_Position(0);
    asyncResult = fStream.BeginRead(tempState.get_ReadArray(), 0,
        tempState.get_ReadArray().length , 
        new AsyncCallback(EndReadCallback), tempState);

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

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

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

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

FileStream-Klasse
FileStream-Member
System.IO-Namespace

Weitere Ressourcen

Datei- und Stream-E/A
Gewusst wie: Lesen aus einer Textdatei
Gewusst wie: Schreiben von Text in eine Datei
Asynchrone Datei-E/A