本人新手,请各位大哥哥大姐姐多多指点一下。我想实现用delphi线程类来做一下操作。
delphi线程类:挂起,唤醒,结束,创建。
请各位大哥哥大姐姐帮解释一下。越详细越好。谢谢;
注意是delphi线程类
delphi线程类:挂起,唤醒,结束,创建。
请各位大哥哥大姐姐帮解释一下。越详细越好。谢谢;
注意是delphi线程类
解决方案 »
- delphi7中如何做报表
- TdxTabContainerDockSite 是哪个控件包里的 在哪里?
- 调用COM组件程序时遇到问题,数据类型如何转换,请各位DX帮忙解决
- ExpressQuantumGrid怎样用回车在列间移动?
- 那位高手精通ReportMachine做报表
- 想学delphi 大家说用Delphi 6 Personal Edition 还是用Delphi V7.0 正式版,大概几天可以入门啊?大牛门过来说说
- 关于动态生成Button的问题呀?急死人呀!百分感谢!
- ======请教========
- forgot2000的纯送分帖:大家进来说说自己最喜欢的歌吧!
- delph EXE文件加密问题
- 字符指针
- 关于delphi的一些问题
unit main;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,myThread, StdCtrls;type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
procedure TThreadFinsh(Sender:TObject);
public
{ Public declarations }
end;var
Form1: TForm1;
t1,t2,t3:TThread;
implementation{$R *.dfm}
procedure TForm1.TThreadFinsh(Sender:TObject);
begin
ShowMessage('一个线程完毕!');
end;
procedure TForm1.Button1Click(Sender: TObject);
beginif Button1.Caption='开始1' then
begin
Button1.Caption:='关闭';
t1.Resume;
end
else
begin
Button1.Caption:='开始1';
t1.Suspend;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
if Button2.Caption='开始2' then
begin
Button2.Caption:='关闭';
t2.Resume;
end
else
begin
Button2.Caption:='开始2';
t2.Suspend;
end;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
if Button3.Caption='开始3' then
begin
Button3.Caption:='关闭';
t3.Resume;
end
else
begin
Button3.Caption:='开始3';
t3.Suspend;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
t1:=TmyThread1.Create(Label1,10);
t1.OnTerminate:=TThreadFinsh;
t2:=TmyThread2.Create(Label2,20);
t2.OnTerminate:=TThreadFinsh;
t3:=TmyThread3.Create(Label3,30);
t3.OnTerminate:=TThreadFinsh;end;end.线程单元:unit myThread;interfaceuses
Classes,Windows,SysUtils,Forms,StdCtrls;type
TTestThread = class(TThread)
private
FLabel:TLabel;
FSleepDec:Integer;
protected
procedure Execute; override;
public
constructor Create(lbl:TLabel;sleepSec:Integer);
end;
TmyThread1=class(TTestThread) end;
TmyThread2=class(TTestThread) end;
TmyThread3=class(TTestThread) end;
implementation
uses main;{ TTestThread }
constructor TTestThread.Create(lbl:TLabel;sleepSec:Integer); //参数传递
begin
FLabel:=lbl;
FSleepDec:=sleepSec;
FreeOnTerminate:=True; //让线程终止是触发OnTerminate事件
inherited Create(True);//不立即执行,只有调用resume才开始
end;procedure TTestThread.Execute;
var
i:Integer;
begin
for i:=0 to 1000 do
begin
if terminated then Break;
FLabel.Caption:=IntToStr(i);
Sleep(FSleepDec);
end;
end;end.
能给个QQ吗?