Udostępnij za pośrednictwem


FileStream.EndWrite(IAsyncResult) Metoda

Definicja

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.

Dotyczy

Zobacz też