Compartir a través de


AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) Método

Definición

Finaliza 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 ajusta el delegado al que se va a llamar cuando finaliza la operación.

arg
Object

Argumento para el delegado contenido en el d parámetro .

Excepciones

OperationCompleted() se ha llamado anteriormente para esta tarea.

Ejemplos

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

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

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 desea 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 realizar la PostOperationCompleted(SendOrPostCallback, Object) invocación asincrónica, de modo que los proveedores de bibliotecas de clases no necesiten preocuparse por los posibles desbordamientos de pila si asumen asincronía, pero un modelo de aplicación determinado puede ser sincrónico. 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 la implementación de clases asincrónicas, vea Implementación del patrón asincrónico basado en eventos.

Se aplica a

Consulte también