FileStream.EndWrite(IAsyncResult) Metod

Definition

Avslutar en asynkron skrivåtgärd och blockerar tills I/O-åtgärden har slutförts. (Överväg att använda WriteAsync(Byte[], Int32, Int32, CancellationToken) i stället.)

public:
 override void EndWrite(IAsyncResult ^ asyncResult);
public override void EndWrite(IAsyncResult asyncResult);
override this.EndWrite : IAsyncResult -> unit
Public Overrides Sub EndWrite (asyncResult As IAsyncResult)

Parametrar

asyncResult
IAsyncResult

Den väntande asynkrona I/O-begäran.

Undantag

asyncResult är null.

Det här IAsyncResult objektet skapades inte genom att anropa BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) den här klassen.

Strömmen stängs eller så har ett internt fel inträffat.

Exempel

Det här kodexemplet är en del av ett större exempel som tillhandahålls FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) för konstruktorn.

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

Kommentarer

I .NET Framework 4 och tidigare versioner måste du använda metoder som BeginWrite och EndWrite för att implementera asynkrona filåtgärder. Dessa metoder är fortfarande tillgängliga i .NET Framework 4.5 för att stödja äldre kod. De nya asynkrona metoderna, till exempel ReadAsync, WriteAsync, CopyToAsync och FlushAsync, hjälper dig att implementera asynkrona filåtgärder enklare.

Den här metoden åsidosätter EndWrite.

EndWrite måste anropas exakt en gång på varje IAsyncResult från BeginWrite. EndWrite blockeras tills I/O-åtgärden har slutförts.

Gäller för

Se även