AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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.
d es null.
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.