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 objeto SendOrPostCallback que encapsula o delegado a ser chamado quando a operação é encerrada.

arg
Object

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

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)
{
    AsyncOperation asyncOp = userStateToLifetime[taskId] as AsyncOperation;
    if (asyncOp != null)
    {   
        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 o delegado seja invocado no thread ou no 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 de dconclusã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 é 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