AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) Método

Definição

Termina a vida útil 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);
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 envolve 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() já foi chamado anteriormente para esta tarefa.

Exemplos

O exemplo de código seguinte demonstra a utilização do PostOperationCompleted método para terminar a vida útil 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

Observações

Chame o PostOperationCompleted método para terminar a vida útil de uma operação assíncrona. Depois de este método ser chamado para uma tarefa específica, chamadas ao seu objeto correspondente AsyncOperation geram uma exceção.

O d parâmetro envolve o delegado que quer que a sua turma chame quando a vida útil da tarefa termina devido à conclusão, cancelamento ou falha da tarefa. O AsyncOperation objeto garantirá que o seu delegado é invocado no thread ou contexto apropriado para o modelo de aplicação. O seu delegado pode, opcionalmente, levantar um evento que notifique os clientes de que a vida útil da tarefa assíncrona terminou.

O arg parâmetro é usado para passar informação de estado ao delegado dde completação . Podes usar um AsyncOperation objeto, ou um System.ComponentModel.AsyncCompletedEventArgs objeto, como valor do parâmetro. Alternativamente, se quiser fornecer armazenamento adicional de estado, pode usar uma instância de uma classe que deriva dessa System.ComponentModel.AsyncCompletedEventArgs classe.

Notas para Herdeiros

Os herdeiros devem tornar a PostOperationCompleted(SendOrPostCallback, Object) invocação assíncrona, para que os fornecedores de bibliotecas de classes não tenham de se preocupar com potenciais excessos de pilha se assumirem assíncronia, mas um determinado modelo de aplicação for síncrono. O método deve ser interpretado como uma chamada de "fim da vida útil", o que significa que a implementação precisa de fazer o que é apropriado para o modelo de aplicação. Por exemplo, o ASP.NET irá diminuir a sua contagem de operações assíncronas pendentes. Isto também deverá colocar a operação num estado em que quaisquer chamadas subsequentes falham, uma vez que já foi concluída.

Para mais informações sobre a implementação de classes assíncronas, consulte Implementação do Padrão Assíncrono Baseado em Eventos.

Aplica-se a

Ver também