ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Resume() em uma Thread ativa.[RESOLVIDO]

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
rapharezzi
Novato
Novato


Registrado: Quarta-Feira, 23 de Outubro de 2013
Mensagens: 9
Localização: Sinop/MT

MensagemEnviada: Seg Dez 09, 2013 10:07 am    Assunto: Resume() em uma Thread ativa.[RESOLVIDO] Responder com Citação

Eae galera!

Estou trabalhando com threads e surgiu uma dúvida:
Quando executo um Resume() pra uma thread que já esta ativa ela é finalizada e depois inicializada?
O que ocorre?

Fiz na prática o teste, mas não ficou claro, pois nenhum erro é gerado e a thread é reiniciada normalmente.

Gostaria de saber quais problemas isso pode gerar.

Desde já, agradeço!
_________________
Vida longa e Próspera


Editado pela última vez por rapharezzi em Qua Jan 15, 2014 9:07 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
cyberdisk
Colaborador
Colaborador


Registrado: Domingo, 4 de Julho de 2010
Mensagens: 2391
Localização: São José dos Campos - SP

MensagemEnviada: Qua Dez 18, 2013 11:01 am    Assunto: Responder com Citação

Resume ou Start:

O método Resume coloca a thread para funcionar, ou seja, executa o método Execute.
No Delphi 2010 Resume está deprecated, sendo usado o Start.

mais informações nesse tutorial

http://www.forum-invaders.com.br/vb/showthread.php/13989-Tutorial-Delphi-Threads

abraço
_________________
O conhecimento abre muitas portas
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
marcieldeg
Colaborador
Colaborador


Registrado: Terça-Feira, 5 de Abril de 2011
Mensagens: 1054
Localização: Vitória - ES

MensagemEnviada: Qua Dez 18, 2013 1:40 pm    Assunto: Responder com Citação

Também fiquei curioso.

Fiz a seguinte unit para testar:

Código:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
    FThread: TThread;
    procedure Imprime1;
    procedure Imprime2;
    procedure Imprime3;
  public
    { Public declarations }
  end;

  TThread1 = class(TThread)
    procedure Execute; override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TThread1 }

procedure TThread1.Execute;
begin
  while not Terminated do
  begin
    Synchronize(Form1.Imprime1);
    Sleep(1000);
    Synchronize(Form1.Imprime2);
    Sleep(1000);
    Synchronize(Form1.Imprime3);
    Sleep(1000);
  end;
end;

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  FThread := TThread1.Create(False);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  FThread.Suspend;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  FThread.Resume;
end;

procedure TForm1.Imprime1;
begin
  Memo1.Lines.Add('1');
end;

procedure TForm1.Imprime2;
begin
  Memo1.Lines.Add('2');
end;

procedure TForm1.Imprime3;
begin
  Memo1.Lines.Add('3');
end;

end.


Suspend() interrompe a thread. Ao dar Resume(), ela prossegue de onde parou.

Att
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB