TThread類 Thread類是Delphi語言提供的線程類,該線程類可以完成大多數的線程操作
TThread類的屬性
1.(1)FreeOnTerminate屬性
當線程終止時是否自動删除線程對象.預設值為True; 文法:property FreeOnTerminate: Boolean;
2 Priority屬性 指定線程的優先級. property Priority: TTreadPriority;
3 ReturnValue屬性 線程終止時,用該屬性為其他線程傳遞一個傳回值.
4 Suspended屬性 指定線程是否處于挂起狀态
5 Terminated 線程運作晨,如果将屬性為True時,線程終止
6 ThreadID屬性 線程的惟一辨別
7 Handle屬性 線程句柄
TThread類方法
DoTerminate: 調用線程對象DoTerminate方法可以觸發線程的OnTerminate事件
Execute:線程的執行部分都寫在該有方法中.必須實作的
Resume:當線程對象處于暫停狀态時,調用此方法可以恢複線程運作
Suspend:暫停線程
Synchronize:線程同步
Terminate:終止線程
WaitFor:等待線程對象的終止,并傳回線程對象的ReturnValue屬性值
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TMyThread = class(TThread)
protected
procedure Run();
procedure Execute;override;
end;
TfrmDemo = class(TForm)
ProgressBar1: TProgressBar;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmDemo: TfrmDemo;
implementation
{$R *.dfm}
{ TMyThread }
procedure TMyThread.Execute;
begin
inherited;
//線程同步
Synchronize(Run);
end;
procedure TMyThread.Run;
var
I: Integer;
begin
with frmDemo do
begin
for I := 0 to ProgressBar1.Max do
begin
Label1.Caption := '工作線程運作中';
ProgressBar1.Position := i;
Application.ProcessMessages;
end;
end;
end;
procedure TfrmDemo.Button1Click(Sender: TObject);
var
I: Integer;
begin
for I := 0 to ProgressBar1.Max do
begin
Label1.Caption := '主線程運作中';
ProgressBar1.Position := i;
Application.ProcessMessages;
end;
end;
procedure TfrmDemo.Button2Click(Sender: TObject);
var
MyThread: TMyThread;
begin
MyThread := TMyThread.Create(false);
end;
procedure TfrmDemo.FormCreate(Sender: TObject);
begin
progressbar1.Max := 1000000;
end;
end.