Post: [Paralelismo em Delphi] Conhecendo a interface da TTask

Alessandro Medeiros

Fala ai Radizeiro e Radizeira, tudo bem com você?

Muito de nós desenvolvedores Delphi sofremos com travamento na aplicação.

O usuário realiza uma operação, e quer fazer outra e não consegue porque a primeira operação está travando todo o sistema.

Essa uma das nossas maiores dores de cabeça.

Tenho certeza que no fim dessa série sobre Paralelismo você estará pronto para se livrar desses problemas.

No post de hoje iremos falar sobre a interface da TTask.

No post anterior vimos como utilizar a classe TTask, juntamente com o Thread.Synchronize.

O Thread.Synchronize não é obrigatório, poderia executar o TTask sem ele tranquilamente.

Observe como estava o código do post anterior utilizando Thread.Synchronize.

procedure TForm1.Button2Click(Sender: TObject);
begin
    TTask.Run(procedure
begin
    Sleep(10000);
    TThread.Synchronize(TThread.CurrentThread,
    procedure
    begin
        Label1.Caption := DateTimeToStr(now);
    end);
    end);
end;

Se você não viu ainda o post anterior clique aqui.

Retirando o TThread.Synchronize, ele irá rodar sem problema.

procedure TForm1.Button2Click(Sender: TObject);
begin
    TTask.Run(procedure
begin
    Sleep(10000);
    Label1.Caption := DateTimeToStr(now);
end);
end;

Como eu sei que, o que estou fazendo não terá acessos simultâneos.

Sei que estou mexendo nesse Label1, e mais ninguém irá acessar esse Label no mesmo momento.

Nesse caso eu não tenho necessidade do Synchronize.

Agora quando você está trabalhando com várias Thread, que compartilham os mesmo recursos, aí sim, é importante o Synchronize.

Observe que funcionou do mesmo jeito sem o Synchronize.

Como falei, o Synchronize é importante quando você não tem essa garantia, ou seja, a qualquer momento alguém pode tentar compartilhar aquele recurso com você.

Utilizamos a classe TTask, e dentro da Task temos a sua interface a ITask.

Ela compartilha algumas operações a mais.

E com isso podemos trabalhar com esses métodos de forma interfaceada.

Quem está acostumado com qualidade de código, programação orientada a interface, e tudo mais, sabe do que estou falando.

Caso não saiba do que estou falando, logo no final do post irei deixar um link que você será direcionado a página do CLUBE DOS PROGRAMADORES EM DELPHI, e lá temos vários treinamentos onde mostro um pouco sobre isso.

Quando trabalhamos com interface temos algumas facilidades, e é muito importante que você possa saber sobre isso.

Usando a interface ITask, não muda muita coisa, mas temos mais opções para trabalhar.

Observe que temos diversas operações.

E ao longo dessa nossa série iremos explorar essa operações da interface.

procedure TForm1Button3Click(Sender: TObject);
var
    t2: ITask;
begin
    t2 := TTask.Create(procedure
begin
    Sleep(10000);
    TThread.Synchronize(TThread.CurrentThread,
    procedure
    begin
        Label1.Caption := DateTimeToStr(Now);
    end);
    end);
t2.start;
end;

O funcionamento da interface é muito parecido no que vimos no post anterior.

Como você pode observar no código acima, temos uma variável do tipo ITask, e criamos o TTask.

Antes nós chamávamos o TTask.Run, agora nós simplesmente damos um Create, e passamos o método anônimo para o Create.

Dentro do método anônimo, criamos a mesma Thread, mas como podemos observar no final chamo o Start, se não chamar este método a Thread não será executada.

Viu que depois de 10 segundos a alteração do Label aconteceu, isso sem travar a aplicação.

Observe que é a mesma coisa com relação ao que vimos no post anterior, mas é muito importante saber utilizar a interface, pois com ela conseguimos realizar operações que só com o TTask você não consegue.

Esse é o primeiro momento para que possamos trabalhar com essa interface.

Ao longo da série iremos explorar bastante as funcionalidade existentes nela.

Muito legal quando aplicamos boas práticas juntamente com as funcionalidades existentes na linguagem.

Se deseja aprofundar-se mais nesses recursos, e em outros conteúdos existentes na linguagem, então acesse e venha participar da verdadeira NETFLIX para os programadores em Delphi, o  CLUBE DOS PROGRAMADORES EM DELPHI.

E caso você tenha interesse de conhecer mais sobre PPL acessa o nosso portal do CLUBE DE PROGRAMADORES EM DELPHI, onde você não só terá conteúdos relacionados aos generics, mas uma quantidade enorme de conteúdos que poderá lhe ajudar muito no seu dia a dia, é uma verdadeira NETFLIX para os programadores Delphi.

CLIQUE AQUI E SAIBA MAIS SOBRE O CLUBE DOS PROGRAMADORES DELPHI


Faça sua busca

CATEGORIAS

POSTS RECENTES

E caso você tem interesse de conhecer mais sobre [Paralelismo em Delphi] Conhecendo a interface da TTask, acesse o nosso portal do CLUBE DE PROGRAMADORES EM DELPHI
Você não terá só conteúdos relacionados ao [Paralelismo em Delphi] Conhecendo a interface da TTask, mas uma quantidade enorme de conteúdos que poderá lhe ajudar muito no seu dia a dia, é uma verdadeira NETFLIX para os programadores Delphi.
Gostou?
Compartilhe:

Embarque no foguete com milhares de devs para aprender desenvolvimento, evoluir de forma contínua e se manter relevante no mercado.

Sobre
Dúvidas
Cadastre-se em nossa lista

Para ter acesso em primeira mão, a tudo que acontece na Academia do Código, basta se cadastrar em nossa lista

Grupo Thulio Bittencourt | Academia do Código

#FaçaPartedaHistória

Copyright © 2022 – Todos os direitos reservados