Diferença entre ITASK e IFUTURE – Show Delphi

DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

PARA QUEM GOSTA DE DELPHI

Diferença entre ITASK e IFUTURE

 

ITask e IFUTURE são interfaces disponíveis através de TTASK que se encontra na unit System.Threading…

Enquanto ITask aguarda uma chamada x.start; para iniciar o processamento em uma Thread própria, o IFuture já inicia o processamento de imediato e aceita aguardar uma resposta após o término de execução.
Exemplo ITask: (aguarda start para iniciar)

1
2
3
4
5
6
7
8
tsk := TTask.create( procedure begin
  // código a ser executado
end);
 
tsk.start;
 
//pode ou não pedir para aguardar conclusão:
tsk.wait( 1000000);

Exemplo IFuture: (inicia assim que for criado)

1
2
3
4
5
6
tsk = TTask.Future<boolean>( 
  function:boolean 
  begin
    // código.....
    Result := true; // resposta para o processamento
  end);

Resposta := tsk.value; // aguarda a Thread terminal e pega o resultado

Caso precise retornar mais de um valor, há possibilidades de utilizar um RECORD:

Veja o exemplo:

1
2
3
4
5
6
7
8
9
10
11
12
TPessoa = record
  nome:string;
  idade:integer;
end;
 
tsk = TTask.Future<TPessoa>( 
function:TPessoa 
begin
  // código.....
  Result.nome := 'Nome'; // resposta para o processamento
  Result.idade := 18;
end);

Recuperando o resultado:

1
2
3
4
 
resposta := tsk.value; // aguarda a thread terminar e pega o resultado
  if resposta.idade>18 then
    // seu código

Autor original: Amarildo Lacerda

Este texto foi escrito bom base no material disponível em:
https://github.com/amarildolacerda/docs/blob/master/DelphiXFirebid.pdf

Facebook Comments

Posts Relacionados

  • Administrador
  • 1.215 views
  • 0 comentários
  • 16 de fevereiro de 2016

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Ir ao topo

© 2016 Infus Soluções em Tecnologia - Todos os Direitos Reservados