Éliminer une tâche
Vous pouvez éliminer une tâche lors de l’exécution. Vous ne pouvez pas exécuter une tâche que vous avez éliminée.
Méthode Stop()
Stop()
Chaque tâche asynchrone se termine automatiquement lorsque le nœud parent du NetLogic est supprimé. Néanmoins, nous recommandons d’éliminer les tâches à l’intérieur de la méthode
Stop()
en invoquant la méthode Dispose()
, comme le montre l’exemple suivant.public override void Stop() { myTask.Dispose(); }
IMPORTANT:
L’appel de la méthode
Dispose()
sur une tâche asynchrone la bloque jusqu’à ce que le code exécuté par la tâche renvoie le contrôle à l’appelant (par le biais du contrôle de l’état de la tâche ou pour l’achèvement de la tâche).Exemple
L’exemple suivant présente la création, l’exécution et l’élimination d’une tâche asynchrone.
public override void Start() { myTask = new PeriodicTask(IncrementVariable, 1000, LogicObject) myTask.Start(); } public override void Stop() { myTask.Dispose(); } private void IncrementVariable() { variable1.Value = variable1.Value + 1; } private PeriodicTask myTask;
L’exemple inclut les étapes suivantes :
- Définir une variable d’instance privée (private PeriodicTask myTask;) dans la classe C# contenue dans le NetLogic.CONSEIL: Selon le type de tâche à créer, la classe de cette variable doit êtrePeriodicTask,DelayedTaskouLongRunningTask.
- Définir une méthode (IncrementVariable()) que la tâche doit exécuter.
- Créer la tâche.Dans la méthodeStart(), dans la classe C# contenue dans le NetLogic, la variable d’instance privée (myTask) est initialisée à l’aide du constructeur de classe (PeriodicTask).CONSEIL: Le constructeur requiert plusieurs arguments en fonction de la classe à laquelle il appartient. Consultez la rubrique Tâche asynchrone.
- Exécuter la tâche dès que le NetLogic est initialisé lors de l’exécution.Dans la méthodeStart()de la classe C# contenue dans le NetLogic, la méthodeStart()est appelée dans la tâche (myTask.Start()).
- Éliminer la tâche dans la méthodeStop()en invoquant la méthodeDispose().
Fournir une réponse