Task (gb)
Since 3.3
Esta classe virtual pretende ser a classe pai de todas as tarefas em segundo plano.
This class is not creatable.
Properties
Handle
|
|
Running
|
Retorna se a tarefa (task) está em execução ou não.
|
Value
|
Retorna o valor devolvido pela tarefa em segundo plano.
|
Methods
Kill
|
|
Stop
|
Abortar a tarefa em segundo plano.
|
Wait
|
Aguarde até que a tarefa em segundo plano termine.
|
Events
Error
|
Este evento é gerado quando a tarefa em segundo plano imprime algo em sua saída de erro.
|
Kill
|
Este evento é gerado quando a tarefa termina.
|
Read
|
Este evento é gerado quando a tarefa em segundo plano imprime algo em sua saída padrão.
|
Como isso funciona?
Para executar uma tarefa em segundo plano:
-
Você deve criar uma classe que herda de Task.
-
Essa classe deve ter um método público "Main" sem nenhum argumento.
-
Você deve instanciar a classe para iniciar uma nova tarefa.
-
Em seguida, o método
Main
será executado automaticamente em segundo plano no próximo ciclo de eventos.
O método
Main
corre por um fork. Ele pode acessar todas as outras partes do
programa, exceto que o processo pai não verá nenhuma mudança feita pela tarefa.
Muitos componentes não gostam de ser bifurcados. Especialmente os GUI. Portanto, tenha cuidado.
Envio de argumentos para Task
Para enviar argumentos para a tarefa, é necessário apenas definir algumas variáveis públicas nele, e preenchê-las antes que a tarefa inicie.
Receber um resultado de Task
O método
Main
pode retornar qualquer valor que será enviado para o processo pai através
uma serialization/deserialization do processo interno.
O valor pode ser qualquer valor que você possa usar com a instrução
WRITE.
O processo pai só tem que ler a propriedade
Value para obter esse valor de retorno.
Task, saídas padrão
A saída padrão de Task (instrução
PRINT) e saída de erro (instrução
ERROR) são
automaticamente redireccionado, e o processo pai vai buscá-los através dos eventos
Read and
Error.
Task erros
Se algo errado ocorre durante a execução da tarefa, o processo pai pode aprender sobre isso através da leitura
da propriedade
Value, porque um evento de erro será gerado. A mensagem de erro, esperançosamente, explicar o problema.
Task prioridade
Para baixar a prioridade de uma tarefa, use a propriedade
Application.Priority.