|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
rapharezzi Novato
Registrado: Quarta-Feira, 23 de Outubro de 2013 Mensagens: 9 Localização: Sinop/MT
|
Enviada: Seg Dez 09, 2013 10:07 am Assunto: Resume() em uma Thread ativa.[RESOLVIDO] |
|
|
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 |
|
|
cyberdisk Colaborador
Registrado: Domingo, 4 de Julho de 2010 Mensagens: 2391 Localização: São José dos Campos - SP
|
|
Voltar ao Topo |
|
|
marcieldeg Colaborador
Registrado: Terça-Feira, 5 de Abril de 2011 Mensagens: 1054 Localização: Vitória - ES
|
Enviada: Qua Dez 18, 2013 1:40 pm Assunto: |
|
|
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 |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|