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 |
---|---|
Die Länge des Arrays minus offset ist kleiner als numBytes. |
|
array ist NULL (Nothing in Visual Basic). |
|
offset oder numBytes ist negativ. |
|
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. |
|
In eine Textdatei schreiben. |
|
Aus einer Textdatei lesen. |
|
Text an eine Datei anfügen. |
|
Eine Datei umbenennen oder verschieben. |
|
Eine Datei kopieren. |
|
Die Größe einer Datei abrufen. |
|
Die Attribute einer Datei abrufen. |
|
Die Attribute einer Datei festlegen. |
|
Bestimmen, ob eine Datei vorhanden ist. |
|
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 |
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