unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TMY = class(TThread) public ThreadEnd:boolean; constructor create(); overload; destructor Destroy(); overload; procedure execute; override; end; TForm1 = class(TForm) Button1: TButton; Panel1: TPanel; Button2: TButton; Panel2: TPanel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } My: TMY; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} constructor TMY.create(); begin ThreadEnd :=False; FreeOnTerminate := True; inherited Create(False); end; destructor TMY.Destroy(); begin inherited Destroy; end; procedure TMY.execute; var i: Integer; begin for i := 1 to 5000 do begin Sleep(1); Form1.Panel1.Caption := IntToStr(i); end; ThreadEnd :=True; end; procedure TForm1.Button1Click(Sender: TObject); begin My := TMY.create;// 执行线程 end; procedure TForm1.Button2Click(Sender: TObject); var I:Cardinal; Isquit:Boolean; begin Isquit:=GetExitCodeThread(My.handle,i) ;//检查线程是否结束 if Isquit then Button2.Caption:='True' else Button2.Caption:='False'; // My.ThreadEnd=True 也可以确定线程结束。 end; end.
Delphi 实现检测线程类TThread是否结束
最新推荐文章于 2024-08-16 16:18:11 发布