AsyncOperation AsyncOperation AsyncOperation AsyncOperation Class

Définition

Suit la durée de vie d'une opération asynchrone.Tracks the lifetime of an asynchronous operation.

public ref class AsyncOperation sealed
public sealed class AsyncOperation
type AsyncOperation = class
Public NotInheritable Class AsyncOperation
Héritage
AsyncOperationAsyncOperationAsyncOperationAsyncOperation

Exemples

L’exemple de code suivant illustre l' AsyncOperation utilisation d’un objet pour effectuer le suivi de la durée de vie des opérations asynchrones.The following code example demonstrates using an AsyncOperation object to track the lifetime of asynchronous operations. Cet exemple de code fait partie d’un exemple plus complet fourni System.ComponentModel.AsyncOperationManager pour la classe.This code example is part of a larger example provided for the System.ComponentModel.AsyncOperationManager class.

Pour obtenir la liste complète de code, consultez Comment : implémenter un composant qui prend en charge le modèle asynchrone basé sur événement.For a full code listing, see How to: Implement a Component That Supports the Event-based Asynchronous Pattern. Pour obtenir la liste complète du code d’un formulaire client , consultez Procédure: implémenter un client du modèle asynchrone basé sur des événements.For a full code listing of a client form, see How to: Implement a Client of the Event-based Asynchronous Pattern.

// This method starts an asynchronous calculation. 
// First, it checks the supplied task ID for uniqueness.
// If taskId is unique, it creates a new WorkerEventHandler 
// and calls its BeginInvoke method to start the calculation.
public virtual void CalculatePrimeAsync(
    int numberToTest,
    object taskId)
{
    // Create an AsyncOperation for taskId.
    AsyncOperation asyncOp =
        AsyncOperationManager.CreateOperation(taskId);

    // Multiple threads will access the task dictionary,
    // so it must be locked to serialize access.
    lock (userStateToLifetime.SyncRoot)
    {
        if (userStateToLifetime.Contains(taskId))
        {
            throw new ArgumentException(
                "Task ID parameter must be unique", 
                "taskId");
        }

        userStateToLifetime[taskId] = asyncOp;
    }

    // Start the asynchronous operation.
    WorkerEventHandler workerDelegate = new WorkerEventHandler(CalculateWorker);
    workerDelegate.BeginInvoke(
        numberToTest,
        asyncOp,
        null,
        null);
}
' This method starts an asynchronous calculation. 
' First, it checks the supplied task ID for uniqueness.
' If taskId is unique, it creates a new WorkerEventHandler 
' and calls its BeginInvoke method to start the calculation.
Public Overridable Sub CalculatePrimeAsync( _
    ByVal numberToTest As Integer, _
    ByVal taskId As Object)

    ' Create an AsyncOperation for taskId.
    Dim asyncOp As AsyncOperation = _
        AsyncOperationManager.CreateOperation(taskId)

    ' Multiple threads will access the task dictionary,
    ' so it must be locked to serialize access.
    SyncLock userStateToLifetime.SyncRoot
        If userStateToLifetime.Contains(taskId) Then
            Throw New ArgumentException( _
                "Task ID parameter must be unique", _
                "taskId")
        End If

        userStateToLifetime(taskId) = asyncOp
    End SyncLock

    ' Start the asynchronous operation.
    Dim workerDelegate As New WorkerEventHandler( _
        AddressOf CalculateWorker)

    workerDelegate.BeginInvoke( _
        numberToTest, _
        asyncOp, _
        Nothing, _
        Nothing)

End Sub

Remarques

Quand vous implémentez une classe en fonction de la vue d’ensemble du modèle asynchrone basésur les événements, vous devrez peut-être effectuer le suivi de la durée de vie de chaque opération asynchrone appelée sur une instance de votre classe.When you implement a class according to the Event-based Asynchronous Pattern Overview, you may need to track the lifetime of each asynchronous operation invoked on an instance of your class. La AsyncOperation classe permet de suivre et de signaler la progression d’une tâche asynchrone.The AsyncOperation class provides ways to track and report the progress of an asynchronous task.

La liste suivante identifie les façons d’utiliser AsyncOperation un objet:The following list identifies ways to use an AsyncOperation object:

  • Pour signaler la progression et les résultats intermédiaires au client, Post appelez à partir de votre code de travail asynchrone.To report progress and interim results to the client, call Post from your asynchronous worker code.

  • Pour indiquer qu’une tâche asynchrone est terminée, ou pour annuler une tâche asynchrone en attente, PostOperationCompletedappelez.To indicate that an asynchronous task has completed, or to cancel a pending asynchronous task, call PostOperationCompleted.

Votre classe doit obtenir un AsyncOperation objet pour chaque tâche asynchrone en appelant AsyncOperationManager.CreateOperation lorsque chaque tâche démarre.Your class should get an AsyncOperation object for each asynchronous task by calling AsyncOperationManager.CreateOperation when each task starts. Pour permettre au client de distinguer des tâches asynchrones AsyncOperationManager.CreateOperation distinctes, prend un paramètre pour un jeton unique fourni par le client, UserSuppliedState qui devient la propriété.To allow the client to distinguish separate asynchronous tasks, AsyncOperationManager.CreateOperation takes a parameter for a unique client-provided token, which becomes the UserSuppliedState property. Il peut ensuite être utilisé par le code client pour identifier la tâche asynchrone particulière qui déclenche des événements de progression ou de fin.It can then be used by client code to identify the particular asynchronous task that is raising progress or completion events.

Notes pour les héritiers

Les implémenteurs doivent s' PostOperationCompleted(SendOrPostCallback, Object) assurer Post(SendOrPostCallback, Object) que les appels et sont asynchrones, de sorte que les fournisseurs de bibliothèques de classes n’ont pas besoin de se préoccuper des débordements de pile potentiels s’ils supposent un comportement asynchrone dans une application particulière modèle qui devient synchrone.Implementers must ensure the PostOperationCompleted(SendOrPostCallback, Object) and Post(SendOrPostCallback, Object) invocations are asynchronous, so that class library providers do not need to concern themselves with potential stack overflows if they assume asynchronous behavior in a particular application model that happens to be synchronous.

Pour plus d’informations sur l’implémentation de classes asynchrones, consultez implémentation du modèle asynchrone basé sur les événements.For more information about implementing asynchronous classes, see Implementing the Event-based Asynchronous Pattern.

Propriétés

SynchronizationContext SynchronizationContext SynchronizationContext SynchronizationContext

Obtient l'objet SynchronizationContext passé au constructeur.Gets the SynchronizationContext object that was passed to the constructor.

UserSuppliedState UserSuppliedState UserSuppliedState UserSuppliedState

Obtient ou définit un objet servant à identifier de manière unique une opération asynchrone.Gets or sets an object used to uniquely identify an asynchronous operation.

Méthodes

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Détermine si l'objet spécifié est identique à l'objet actuel.Determines whether the specified object is equal to the current object.

(Inherited from Object)
Finalize() Finalize() Finalize() Finalize()

Finalise l’opération asynchrone.Finalizes the asynchronous operation.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fait office de fonction de hachage par défaut.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crée une copie superficielle de l'objet Object actuel.Creates a shallow copy of the current Object.

(Inherited from Object)
OperationCompleted() OperationCompleted() OperationCompleted() OperationCompleted()

Termine la durée de vie d'une opération asynchrone.Ends the lifetime of an asynchronous operation.

Post(SendOrPostCallback, Object) Post(SendOrPostCallback, Object) Post(SendOrPostCallback, Object) Post(SendOrPostCallback, Object)

Appelle un délégué sur le thread ou le contexte approprié pour le modèle d'application.Invokes a delegate on the thread or context appropriate for the application model.

PostOperationCompleted(SendOrPostCallback, Object) PostOperationCompleted(SendOrPostCallback, Object) PostOperationCompleted(SendOrPostCallback, Object) PostOperationCompleted(SendOrPostCallback, Object)

Termine la durée de vie d'une opération asynchrone.Ends the lifetime of an asynchronous operation.

ToString() ToString() ToString() ToString()

Retourne une chaîne qui représente l'objet actuel.Returns a string that represents the current object.

(Inherited from Object)

S’applique à

Voir aussi