FileStream.EndWrite(IAsyncResult) Método

Definição

Termina uma operação de escrita assíncrona e bloqueia até que a operação de E/S esteja completa. (Considere usar WriteAsync(Byte[], Int32, Int32, CancellationToken) em vez disso.)

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

Parâmetros

asyncResult
IAsyncResult

O pedido pendente de E/S assíncrono.

Exceções

asyncResult é null.

Este IAsyncResult objeto não foi criado ao invocar BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) esta classe.

O fluxo está encerrado ou ocorreu um erro interno.

Exemplos

Este exemplo de código faz parte de um exemplo maior fornecido ao FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) construtor.

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

Observações

No .NET Framework 4 e versões anteriores, é necessário usar métodos como BeginWrite e EndWrite para implementar operações de ficheiros assíncronas. Estes métodos ainda estão disponíveis no .NET Framework 4.5 para suportar código legado; no entanto, os novos métodos assíncronos, como ReadAsync, WriteAsync, CopyToAsync e FlushAsync, ajudam a implementar operações de ficheiros assíncronas de forma mais fácil.

Este método substitui o EndWrite.

EndWrite deve ser chamado exatamente uma vez em cada IAsyncResult a partir de BeginWrite. EndWrite irá bloquear até que a operação de E/S esteja concluída.

Aplica-se a

Ver também