Thread类的创建及使用

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 hunto 的 blog

一、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.

本文关键:Thread类的创建及使用
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top