AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
Objet SendOrPostCallback qui encapsule le délégué à appeler lorsque l’opération se termine.
- arg
- Object
Argument du délégué contenu dans le d paramètre.
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)
{
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
Remarques
Appelez la PostOperationCompleted méthode pour mettre fin à la durée de vie d’une opération asynchrone. Une fois cette méthode 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 vous souhaitez que votre classe appelle 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 informe les clients que la durée de vie de la tâche asynchrone a pris fin.
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. Sinon, si vous souhaitez fournir un stockage d’état supplémentaire, vous pouvez utiliser une 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 pile potentiels s’ils supposent une synchronisation, mais qu’un modèle d’application particulier se produit comme 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 faire ce qui convient au modèle d’application. Par exemple, ASP.NET décrémente son nombre d’opérations asynchrones en attente. Cela doit également placer l’opération dans un état de sorte que les appels suivants échouent, car il est maintenant terminé.
Pour plus d’informations sur l’implémentation de classes asynchrones, consultez Implémentation du modèle asynchrone basé sur les événements.