手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

Delphi多线程开发技术讲解

时间:2024-10-12 13:22:01

1、打开Delphi7集成开发环境,File-New-Other,在弹出的New Items对话框选择Thread Object,点击OK,在弹出的New Thread Object对话框输入类名,点击OK,这样就自动生成一个新线程类的代码文件Unit2.pas

Delphi多线程开发技术讲解
Delphi多线程开发技术讲解
Delphi多线程开发技术讲解
Delphi多线程开发技术讲解

2、在Form1窗体加入Button1、Button2、Button3、Button4 四个按钮,分别设置其Caption属性为:启动、暂停、恢复、结束。和一个Edit1文本框,文本框Text属性设为空。在Uint1.pas文件头部uses加入Unit2。

Delphi多线程开发技术讲解
Delphi多线程开发技术讲解

3、在Unit2.pas文件中增加testThread类的私有成员变量,AEdit,MaxLoop,CurLoop,添加保护方法DisLoop()在Edit1显示当前循环,改写了类的构造方法,并编写Excute()函数体,做成循环。详细代码如下:unit Unit2;interfaceuses Classes,SysUtils,StdCtrls;type testThread = class(TThread) private { Private declarations } AEdit:TEdit; //显示循环次数用 MaxLoop:Integer; //最大循环次数 CurrentLoop:Integer; //当前循环次数 protected procedure Execute; override; procedure DisLoop; public constructor Create(Edit:TEdit;Max:Integer); end;implementationconstructor testThread.Create(Edit: TEdit; Max: Integer);begin inherited Create(False); //False创建线程后立即执行 AEdit:=Edit; MaxLoop:=Max; FreeOnTerminate:=True; //结束时释放资源end;procedure testThread.DisLoop;begin AEdit.text := InttoStr(CurrentLoop);end;procedure testThread.Execute;vari:Integer;begin for i:=0 to MaxLoop Do begin CurrentLoop := i; Synchronize(DisLoop); //同步Edit1的显示 if Terminated then Exit; //结束退出函数 end;end;end.

4、在Unit1.pas中加入按钮的对应响应函数,分别实现启动线程、暂停线程、恢复线程恽但炎杰和终止线程的功能。完整代码如下:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,Unit2, StdCtrls;type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } procedure ThreadDone(Sender:TObject); end;var Form1: TForm1; //声明线程变量 MyThread:testThread;implementation{$R *.dfm}//启动线程procedure TForm1.Button1Click(Sender: TObject);begin MyThread:=testThread.Create(Edit1,500000); MyThread.OnTerminate := ThreadDone; //线程结束时执行的函数 Button1.enabled:=False;end;procedure TForm1.ThreadDone(Sender: TObject);begin Button1.Enabled:=True;end;//暂停线程procedure TForm1.Button2Click(Sender: TObject);begin MyThread.Suspended:=True;end;//恢复线程procedure TForm1.Button3Click(Sender: TObject);begin MyThread.Suspended := False;end;//结束线程procedure TForm1.Button4Click(Sender: TObject);begin MyThread.Terminate;end;end.

5、程序执行效果如下图,这就是简单的Delphi多线程应用,Delphi封装了很多Winodows方法,使用起来十分容易

Delphi多线程开发技术讲解
© 手抄报圈