Compartir a través de


AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) Método

Definición

Pone fin a la duración de una operación asincrónica.

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

Objeto SendOrPostCallback que contiene el delegado al que se va a llamar cuando finalice la operación.

arg
Object

Argumento del delegado incluido en el parámetro d.

Excepciones

Se ha llamado previamente al método OperationCompleted() para esta tarea.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar el PostOperationCompleted método para finalizar la duración de una operación asincrónica. Este ejemplo de código es parte de un ejemplo más grande proporcionado para la clase System.ComponentModel.AsyncOperationManager.

// 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

Comentarios

Llame al PostOperationCompleted método para finalizar la duración de una operación asincrónica. Después de llamar a este método para una tarea determinada, las llamadas a su objeto correspondiente AsyncOperation generarán una excepción.

El d parámetro ajusta el delegado al que quiere que llame la clase cuando finalice la duración de la tarea debido a la finalización, cancelación o error de la tarea. El AsyncOperation objeto garantizará que el delegado se invoque en el subproceso o contexto adecuado para el modelo de aplicación. El delegado puede generar opcionalmente un evento que notifique a los clientes que ha finalizado la duración de la tarea asincrónica.

El arg parámetro se usa para pasar información de estado al delegado dde finalización . Puede usar un AsyncOperation objeto o un System.ComponentModel.AsyncCompletedEventArgs objeto como valor de parámetro. Como alternativa, si desea proporcionar almacenamiento de estado adicional, puede usar una instancia de una clase derivada de la System.ComponentModel.AsyncCompletedEventArgs clase .

Notas a los desarrolladores de herederos

Los heredadores deben hacer que la PostOperationCompleted(SendOrPostCallback, Object) invocación sea asincrónica, de modo que los proveedores de bibliotecas de clases no tengan que preocuparse por los posibles desbordamientos de pila si asumen asincronía, pero se produce una sincrónica en un modelo de aplicación determinado. El método debe interpretarse como una llamada de "finalización de la duración", lo que significa que la implementación debe hacer lo que es adecuado para el modelo de aplicación. Por ejemplo, ASP.NET disminuirá su recuento de operaciones asincrónicas pendientes. Esto también debe poner la operación en un estado de modo que se produzca un error en las llamadas posteriores, ya que ahora se ha completado.

Para obtener más información sobre cómo implementar clases asincrónicas, vea Implementación del patrón asincrónico basado en eventos.

Se aplica a

Consulte también