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