Delphi 线程类实例

 

unit Unit1;

       

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)

    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
  end;

lvThread=class(tthread)//定义线程类
private
count:integer;
protected
procedure Execute;override;
public
constructor create();//声明构造

end;

var
  Form1: TForm1;
  test,test1:lvthread;
implementation

{$R *.dfm}
constructor lvthread.create();//实现构造
begin
freeonTerminate:=true;//当执行完后是否自动销毁
inherited create(false);//false表示是否挂起,这里直接执行execure方法
end;
procedure lvthread.Execute;//线成执行实体
begin
repeat
inc(count,1);
if count>16000 then count:=-1;
Form1.Label1.caption:=inttostr(count);
until count=-1;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
test:=lvthread.create();//实例话类
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
test.Suspend; //挂起
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
test.Resume; //恢复
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
test.DoTerminate();//销毁,不过我还不知道怎么销毁,哪为知道的请给我留盐
//http://www.play78.com
end;


end.

//*******************************************

一、Thread类的创建:

unit Thread;
{             线程类的创建
  编译环境: Windows 2003 Sever  Delphi 7.0 Enterprise
}
interface
uses classes,sysutils,StdCtrls;
type
  TB = class(TThread)
  private
    i :integer;
    Fedt :TEdit;
    procedure Update ;
  public
    procedure execute;override;
    constructor create(IsSuspended :Boolean;edt :TEdit);
  end;
implementation
uses MainForm;

procedure TB.Update;
begin
  Fedt.Text :=inttostr(i);
end;

constructor TB.create(IsSuspended: Boolean; edt: TEdit);
begin
  inherited create(IsSuspended);
  Fedt := edt;
end;

procedure TB.execute;
begin
  i:=0;
  while(not Terminated) do
  begin
    Synchronize(Update);
    inc(i);
  end;
end;
end.

二、Thread类的使用:

unit MainForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,Thread;

type
  TfrmMain = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ButtonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


var
  frmMain: TfrmMain;
  a,b:TB;
implementation

{$R *.dfm}

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  a:=TB.create(true,edit1);
  b:=TB.create(True,edit2);
end;

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  freeandnil(a);freeandnil(b);
end;

procedure TfrmMain.ButtonClick(Sender: TObject);
var c :TB;
begin
  if sender = Button1 then c :=a
  else c:=b;
  if c.Suspended then begin
    c.Resume ; (sender as TButton).Caption :='暂停';
  end else begin
    c.Suspend ;(Sender as TButton).Caption :='开始';
  end;
end;

end.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值