Compartilhar via


AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) Método

Definição

Encerra o tempo de vida de uma operação assíncrona.

public:
 void PostOperationCompleted(System::Threading::SendOrPostCallback ^ d, System::Object ^ arg);
public void PostOperationCompleted(System.Threading.SendOrPostCallback d, object arg);
public void PostOperationCompleted(System.Threading.SendOrPostCallback d, object? arg);
member this.PostOperationCompleted : System.Threading.SendOrPostCallback * obj -> unit
Public Sub PostOperationCompleted (d As SendOrPostCallback, arg As Object)

Parâmetros

d
SendOrPostCallback

Um SendOrPostCallback objeto que encapsula o delegado a ser chamado quando a operação termina.

arg
Object

Um argumento para o delegado contido no d parâmetro.

Exceções

OperationCompleted() foi chamado anteriormente para essa tarefa.

Exemplos

O exemplo de código a seguir demonstra o uso do PostOperationCompleted método para encerrar o tempo de vida de uma operação assíncrona. Este exemplo de código faz parte de um exemplo maior fornecido para a System.ComponentModel.AsyncOperationManager classe.

// This method cancels a pending asynchronous operation.
public void CancelAsync(object taskId)
{
    if (userStateToLifetime[taskId] is AsyncOperation)
    {
        lock (userStateToLifetime.SyncRoot)
        {
            userStateToLifetime.Remove(taskId);
        }
    }
}
' This method cancels a pending asynchronous operation.
Public Sub CancelAsync(ByVal taskId As Object)

    Dim obj As Object = userStateToLifetime(taskId)
    If (obj IsNot Nothing) Then

        SyncLock userStateToLifetime.SyncRoot

            userStateToLifetime.Remove(taskId)

        End SyncLock

    End If

End Sub

Comentários

Chame o PostOperationCompleted método para encerrar o tempo de vida de uma operação assíncrona. Depois que esse método for chamado para uma tarefa específica, as chamadas para seu objeto correspondente AsyncOperation gerarão uma exceção.

O d parâmetro encapsula o delegado que você deseja que sua classe chame quando o tempo de vida da tarefa terminar devido à conclusão, cancelamento ou falha da tarefa. O AsyncOperation objeto garantirá que seu representante seja invocado no thread ou contexto apropriado para o modelo de aplicativo. Opcionalmente, o delegado pode gerar um evento que notifica os clientes de que o tempo de vida da tarefa assíncrona terminou.

O arg parâmetro é usado para passar informações de estado para o delegado dde conclusão. Você pode usar um AsyncOperation objeto ou um System.ComponentModel.AsyncCompletedEventArgs objeto como o valor do parâmetro. Como alternativa, se você quiser fornecer armazenamento de estado adicional, poderá usar uma instância de uma classe derivada da System.ComponentModel.AsyncCompletedEventArgs classe.

Notas aos Herdeiros

Os herdadores devem tornar a PostOperationCompleted(SendOrPostCallback, Object) invocação assíncrona, para que os provedores de biblioteca de classes não precisem se preocupar com possíveis estouros de pilha se assumirem assíncrona, mas um modelo de aplicativo específico seja síncrono. O método deve ser interpretado como uma chamada "encerrando o tempo de vida", o que significa que a implementação precisa fazer o que for apropriado para o modelo de aplicativo. Por exemplo, ASP.NET diminuirá sua contagem de operações assíncronas pendentes. Isso também deve colocar a operação em um estado de modo que todas as chamadas subsequentes a ela falhem, já que ela foi concluída.

Para obter mais informações sobre como implementar classes assíncronas, consulte Implementando o padrão assíncrono baseado em evento.

Aplica-se a

Confira também