FileStream.EndWrite(IAsyncResult) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Ukončí asynchronní operaci zápisu a blokuje ji, dokud se neskončí vstupně-výstupní operace. (Zvažte místo toho použití WriteAsync(Byte[], Int32, Int32, CancellationToken) .)
public:
override void EndWrite(IAsyncResult ^ asyncResult);
public override void EndWrite (IAsyncResult asyncResult);
override this.EndWrite : IAsyncResult -> unit
Public Overrides Sub EndWrite (asyncResult As IAsyncResult)
Parametry
- asyncResult
- IAsyncResult
Čekající asynchronní vstupně-výstupní požadavek.
Výjimky
asyncResult
je null
.
Tento IAsyncResult objekt nebyl vytvořen voláním BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) v této třídě.
EndWrite(IAsyncResult) se volá vícekrát.
Datový proud se zavře nebo došlo k vnitřní chybě.
Příklady
Tento příklad kódu je součástí většího příkladu FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) pro konstruktor.
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.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.
}
let endWriteCallback (asyncResult: IAsyncResult) =
let tempState = asyncResult.AsyncState :?> State
let fStream = tempState.FStream
fStream.EndWrite asyncResult
// Asynchronously read back the written data.
fStream.Position <- 0
let asyncResult =
fStream.BeginRead(tempState.ReadArray, 0, tempState.ReadArray.Length, AsyncCallback endReadCallback, tempState)
// Concurrently do other work, such as
// logging the write operation.
()
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
Poznámky
V rozhraní .NET Framework 4 a starších verzích musíte k implementaci asynchronních operací se soubory použít metody, jako BeginWrite jsou a EndWrite . Tyto metody jsou stále k dispozici v rozhraní .NET Framework 4.5 pro podporu starší verze kódu; Nové asynchronní metody, jako ReadAsyncjsou , WriteAsync, CopyToAsynca FlushAsync, však pomáhají snadněji implementovat asynchronní operace se soubory.
Tato metoda přepíše EndWrite.
EndWrite musí být volána přesně jednou při každém IAsyncResult z BeginWrite. EndWrite se zablokuje, dokud se nedokončí vstupně-výstupní operace.