Task (gb)
Dal 3.3
Questa classe virtuale mira ad essere la classe madre di tutte le attività in background
Questa classe non è creabile.
Proprietà
Handle
|
Restituisce l'ID del processo dell'attività in background.
|
Running
|
Restituisce True/False se l'attività è in esecuzione o meno.
|
Value
|
Ritorna il valore restituito dall'attività in background.
|
Metodi
Kill
|
|
Stop
|
Interrompere l'attività in background.
|
Wait
|
Attende la fine dell'attività in background.
|
Eventi
Error
|
Questo evento viene generato quando l'attività in background stampa qualcosa sul suo output di errore.
|
Kill
|
Questo evento viene generato quando l'attività termina.
|
Read
|
Questo evento viene generato quando l'attività in background stampa qualcosa sul suo output standard.
|
Come funziona?
Per eseguire un'attività in background:
-
È necessario creare una classe che eredita da Task.
-
Quella classe deve avere un metodo pubblico "Main" che non abbia argomenti.
-
È necessario istanziare la classe per iniziare una nuova attività.
-
Quindi il metodo
Main
verrà eseguito automaticamente in background alla prossima chiamata del ciclo di eventi.
Il metodo
Main
è gestito da un fork. Può accedere a tutte le altre parti del programma,
tranne per il fatto che il processo padre non vedrà alcuna modifica eseguita dall'attività.
A molti componenti non piacerà essere biforcati. Soprattutto quelli della GUI. Quindi stai attento.
Invio di argomenti a task
Per inviare argomenti a task, basta definire alcune variabili pubbliche al suo interno e riempirle
prima che l'attività inizi.
Ricevere un risultato da task
Il metodo
Main
può restituire qualsiasi valore che verrà inviato al processo padre tramite
un processo interno di serializzazione/deserializzazione.
Il valore può essere qualsiasi valore che è possibile utilizzare con l'istruzione
WRITE.
Il processo padre deve solo leggere la proprietà
Value per ottenere quel valore di ritorno.
Output standard delle task
L'output standard dell'attività (istruzione
PRINT) e l'output dell'errore (istruzione
ERROR) sono
reindirizzati automaticamente, e il processo genitore li otterrà attraverso gli eventi
Read e
Error.
Errori di Task
Se accade qualcosa di brutto durante l'esecuzione dell'attività (task), il processo genitore può saperlo attraverso la lettura
della proprietà
Value, poiché verrà generato un evento di errore. Spero che il messaggio di errore spieghi il problema.
Priorità di Task
Per ridurre la priorità di un task, utilizzare la proprietà
Application.Priority.