A thread nao era pra rodar independente do sistema?
O codigo abaixo, só atualiza o label, depois de passar os 6seg do sleep que esta dentro da thread. Não era pra disparar a thread independente e comecar a atualizar o label antes de passar os 6 seg ?
Obrigado!
Obrigado!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TXThread = class( TThread )
protected
procedure Execute; override;
end;
var
Form1: TForm1;
T1 : TXThread;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
T1 := TXThread.Create(True);
T1.Execute;
Timer1.Enabled := True;
end;
procedure TXThread.Execute;
begin
sleep(6000);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.caption := TimeToStr(Time);
end;
end.
Tiagops
Curtidas 0
Respostas
Massuda
18/01/2006
Você não deveria chamar o método TThread.Execute. O correto seria...Como a thread é criada suspensa (o True no TThread.Create), ela só inicia a execução se você chamar TThread.Resume.
Como você está chamando diretamente TThread.Execute, esse método é executado dentro da thread principal do programa, não dentro da thread que você criou.
procedure TForm1.Button1Click(Sender: TObject); begin T1 := TXThread.Create(True); T1.Resume; Timer1.Enabled := True; end;
Como você está chamando diretamente TThread.Execute, esse método é executado dentro da thread principal do programa, não dentro da thread que você criou.
GOSTEI 0
Tiagops
18/01/2006
Show!
Valeu
Valeu
GOSTEI 0
Martins
18/01/2006
Você não deveria chamar o método TThread.Execute. O correto seria...Como a thread é criada suspensa (o True no TThread.Create), ela só inicia a execução se você chamar TThread.Resume.
Como você está chamando diretamente TThread.Execute, esse método é executado dentro da thread principal do programa, não dentro da thread que você criou.
procedure TForm1.Button1Click(Sender: TObject); begin T1 := TXThread.Create(True); T1.Resume; Timer1.Enabled := True; end;
Boa [b:5532b6a6ab]Massuda[/b:5532b6a6ab], cara sou teu fã, :D
GOSTEI 0