Partager via


AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) Méthode

Définition

Termine la durée de vie d'une opération asynchrone.

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)

Paramètres

d
SendOrPostCallback

Objet SendOrPostCallback qui inclut dans un wrapper le délégué à appeler lorsque l'opération se termine.

arg
Object

Argument pour le délégué contenu dans le paramètre d.

Exceptions

OperationCompleted() a été appelé précédemment pour cette tâche.

d a la valeur null.

Exemples

L’exemple de code suivant illustre l’utilisation de la PostOperationCompleted méthode pour mettre fin à la durée de vie d’une opération asynchrone. Cet exemple de code fait partie d’un exemple plus grand fourni pour la 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

Remarques

Appelez la PostOperationCompleted méthode pour mettre fin à la durée de vie d’une opération asynchrone. Une fois que cette méthode est appelée pour une tâche particulière, les appels à son objet correspondant AsyncOperation déclenchent une exception.

Le d paramètre encapsule le délégué que votre classe doit appeler lorsque la durée de vie de la tâche se termine en raison de l’achèvement, de l’annulation ou de l’échec de la tâche. L’objet AsyncOperation garantit que votre délégué est appelé sur le thread ou le contexte approprié pour le modèle d’application. Votre délégué peut éventuellement déclencher un événement qui avertit les clients que la durée de vie de la tâche asynchrone est terminée.

Le arg paramètre est utilisé pour transmettre les informations d’état au délégué dd’achèvement . Vous pouvez utiliser un AsyncOperation objet ou un System.ComponentModel.AsyncCompletedEventArgs objet comme valeur de paramètre. Si vous souhaitez fournir un stockage d’état supplémentaire, vous pouvez également utiliser un instance d’une classe que vous dérivez de la System.ComponentModel.AsyncCompletedEventArgs classe .

Notes pour les héritiers

Les héritiers doivent rendre l’appel PostOperationCompleted(SendOrPostCallback, Object) asynchrone, de sorte que les fournisseurs de bibliothèques de classes n’ont pas besoin de s’inquiéter des dépassements de capacité de pile potentiels s’ils supposent qu’ils sont asynchroniques, mais qu’un modèle d’application particulier est synchrone. La méthode doit être interprétée comme un appel « mettant fin à la durée de vie », ce qui signifie que l’implémentation doit effectuer ce qui est approprié pour le modèle d’application. Par instance, ASP.NET décrémente le nombre d’opérations asynchrones en attente. Cela doit également placer l’opération dans un état tel que tous les appels ultérieurs à celle-ci échouent, car elle est maintenant terminée.

Pour plus d’informations sur l’implémentation de classes asynchrones, consultez Implémentation du modèle asynchrone basé sur les événements.

S’applique à

Voir aussi