Aufgabe verwerfen
Sie können zur Laufzeit Aufgaben verwerfen. Verworfene Aufgaben können nicht mehr ausgeführt werden.
Methode Stop()
Stop()
Wenn der übergeordnete Knoten des NetLogic-Objekts entfernt wird, wird jede asynchrone Aufgabe automatisch beendet. Dennoch empfehlen wir, die Verwerfung von Aufgaben innerhalb der Methode
Stop()
durch Aufruf der Methode Dispose()
durchzuführen, wie im folgenden Beispiel veranschaulicht wird.public override void Stop() { myTask.Dispose(); }
WICHTIG:
Der Aufruf der Methode
Dispose()
aus einer asynchronen Aufgabe heraus blockt diese solange, bis der von der Aufgabe ausgeführte Code die Kontrolle an den Aufrufenden zurückgibt (mithilfe der Kontrolle des Aufgabenstatus oder durch Fertigstellung der Aufgabe).Beispiel
Das folgende Beispiel zeigt die Erstellung, Ausführung und Verwerfung einer asynchronen Aufgabe.
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;
Das Beispiel umfasst:
- Definition einer privaten Instanzvariable (private PeriodicTask myTask;) in der C#-Klasse, die in der NetLogic enthalten ist.TIPP: Je nach dem zu erstellenden Aufgabentyp muss die Klasse dieser VariablePeriodicTask,DelayedTaskoderLongRunningTasksein.
- Definition einer Methode (IncrementVariable()), die von der Aufgabe ausgeführt werden muss.
- Erstellung der Aufgabe.Innerhalb der MethodeStart()wird in der C#-Klasse, die in der NetLogic enthalten ist, die private Instanzvariable (myTask) mithilfe des Klassenkonstruktors (PeriodicTask) initialisiert.TIPP: Der Konstruktor erfordert je der Klasse, zu der er angehört, verschiedene Argumente. Weitere Informationen finden Sie unter Asynchrone Aufgabe.
- Ausführung der Aufgabe, sobald die NetLogic zur Laufzeit initialisiert wurde.Innerhalb der MethodeStart()wird in der C#-Klasse, die in der NetLogic enthalten ist, die MethodeStart()für die Aufgabe (myTask.Start()) aufgerufen.
- Verwerfung der Aufgabe in der MethodeStop()durch Aufruf der MethodeDispose().
Rückmeldung geben