Sdílet prostřednictvím


FileStream.EndWrite(IAsyncResult) Metoda

Definice

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ě.

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.

Platí pro

Viz také