Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 12 de Junho de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
88 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Threads no Delphi, por onde começar ? – Parte II
Publicado por rboaro : Quarta, Fevereiro 20, 2013 - 08:41 GMT-3 (607 leituras)
Comentários comentar   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Diego Garcia Dando continuidade à esse estudo introdutório, veremos mais sobre como manipular uma thread. Na primeira parte vimos como criar uma thread e a importância do método Execute(). Vejamos agora outros métodos e propriedades da classe TThread:

- Start(): Basicamente inicia a execução de uma thread, este método é necessário quando criamos uma thread definindo o seu estado inicial como Suspended (suspensa), por exemplo:


oMinhaThread := TMinhaThread.Create(true); //instanciada como suspensa
oMinhaThread.Start();

- Terminate(): Utilizado para parar a execução de uma thread, basicamente este método seta a variável Terminated da thread para true, assim sendo, é necessário realizar o controle desse status na rotina executada na thread, por exemplo:

//Acionando o fim da thread
oMinhaThread.Terminate();

//Realizando o controle de término dentro da thread

procedure TMinhaThread.Execute;
begin
while (not Self.processamentoFinalizado()) do
begin
if Self.Terminated then //verifica se foi solicitado o encerramento da thread
begin
Self.definirProcessamentoFinalizado();
break;
end;
Self.realizarProcessamento();
end;
end;
- Suspend(): Este método pausa a execução da thread suspendendo a sua execução. Mas atenção!!! Este método se tornou obsoleto (deprecated) a partir do Delphi XE:

oMinhaThread.Suspend();
- Resume(): Ao contrário do Suspend(), o Resume() retoma a execução de uma thread que foi pausada. Assim como o Suspend() o Resume() também se tornou obsoleto:

oMinhaThread.Resume();

- OnTerminate: O OnTerminate é na realidade uma propriedade do tipo TNotifyEvent. Assim que a thread é encerrada o OnTerminate será executado, tornando possível atribuir um evento para ser executado assim que a thread chegar ao fim. Esse método será executado no contexto da thread principal e não no contexto da thread atual (veja mais sobre multi-thread no próximo post):

procedure TForm1.reportarFimThread(Sender: TObject);
begin
//O Sender é sempre a thread que está sendo finalizada
gravarLog(format('[%s] Fim da Thread de ID: %d',[TimeToStr(now),TThread(Sender).ThreadID]));
end;
//Atribuindo a procedure para o OnTerminate da thread
oMinhaThread := TMinhaThread.Create(true);
oMinhaThread.OnTerminate := reportarFimThread;
- WaitFor(): Este método aguarda a finalização da thread (finalização do método Execute()) e retorna o ReturnValue (um Integer que pode ser definido no método SetReturnValue()) da thread. O uso do WaitFor() é recomendado para liberar a thread da memória com segurança:
oMinhaThread.Terminate();
if not oMinhaThread.Finished then
oMinhaThread.WaitFor();
oMinhaThread.free;

Essas são as mais básicas e também as principais características da classe TThread. Além das características citadas neste post, para quem não leu a primeira parte deste estudo, vale relembrar do Execute() que é o método executado assim que a thread é iniciada e do FreeOnTerminate que, quando setado para true, faz com que a thread seja liberada da memória automaticamente ao chegar no fim da sua execução.
Na próxima parte vamos ver uma pouco sobre como criar blocos protegidos para acessar objetos compartilhados entre threads com uma maior segurança.


Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados