FileStream.EndWrite(IAsyncResult) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Kończy asynchroniczną operację zapisu i blokuje operację we/wy do czasu zakończenia operacji we/wy. (Rozważ użycie WriteAsync(Byte[], Int32, Int32, CancellationToken) zamiast tego).
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
Oczekujące asynchroniczne żądanie we/wy.
Wyjątki
asyncResult
to null
.
Ten IAsyncResult obiekt nie został utworzony przez wywołanie BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) tej klasy.
EndWrite(IAsyncResult) jest wywoływana wiele razy.
Strumień jest zamknięty lub wystąpił błąd wewnętrzny.
Przykłady
Ten przykład kodu jest częścią większego przykładu podanego dla konstruktora FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) .
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
Uwagi
W .NET Framework 4 i starszych wersjach należy użyć metod, takich jak BeginWrite iEndWrite, aby zaimplementować asynchroniczne operacje na plikach. Te metody są nadal dostępne w .NET Framework 4.5 do obsługi starszego kodu. Jednak nowe metody asynchroniczne, takie jak ReadAsync, WriteAsync, CopyToAsynci FlushAsync, ułatwiają implementowanie asynchronicznych operacji na plikach.
Ta metoda zastępuje metodę EndWrite.
EndWrite musi być wywoływana dokładnie raz na każdym IAsyncResult z BeginWrite. EndWrite operacja we/wy zostanie zablokowana do momentu zakończenia operacji we/wy.