Task (gb)

Desde 3.3

Esta classe virtual pretende ser a classe pai de todas as tarefas em segundo plano.

Esta classe não é instanciável.

Propriedades
Handle  
Running   Retorna se a tarefa (task) está em execução ou não.
Value   Retorna o valor devolvido pela tarefa em segundo plano.

Métodos
Kill  
Stop   Abortar a tarefa em segundo plano.
Wait   Aguarde até que a tarefa em segundo plano termine.

Eventos
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.