Terminare un task
È possibile terminare un task in fase di esecuzione. Non è possibile eseguire un task terminato.
Stop() Metodo
Stop()
MetodoOgni task asincrono termina automaticamente quando viene rimosso il nodo padre NetLogic. Si consiglia, tuttavia, di terminare esplicitamente i task all'interno del
Stop()
metodo richiamando il Dispose()
metodo, come mostrato nell'esempio seguente.public override void Stop() { myTask.Dispose(); }
IMPORTANTE:
Richiamando il
Dispose()
metodo su un blocco task asincrono, finché il codice eseguito dal task restituisce il controllo al chiamante (tramite il controllo dello stato del task o per il completamento del task).Esempio
L'esempio seguente mostra la creazione, l'esecuzione e l'interruzione di un task asincrono.
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'esempio prevede:
- Definizione di una variabile di istanza privata (private PeriodicTask myTask;) nella classe C# contenuta in NetLogic.MANCIA: A seconda del tipo di task da creare, la classe di questa variabile deve esserePeriodicTask,DelayedTaskoppureLongRunningTask
- Definizione di un metodo (IncrementVariable()) che il task deve eseguire.
- Creazione del task.All'interno delStart()metodo, nella classe C# contenuta in NetLogic, la variabile dell'istanza privata (myTask) viene inizializzata tramite il costruttore di classe (PeriodicTask).MANCIA: Il costruttore richiede una varietà di argomenti in base alla classe a cui appartiene. Vedere Task asincrono.
- L'esecuzione del task non appena NetLogic viene inizializzato in fase di esecuzione.All'interno delStart()metodo nella classe C# contenuto in NetLogic, ilStart()metodo viene richiamato sul task (myTask.Start()).
- Terminando il task nelStop()metodo richiamando ilDispose()metodo.
Fornire un feedback