中国领先的工业平台

返回贤集网 返回微头条
贤集网技术微头条APP获取

Delphi多线程:BeginThread用法示例

 3885121

下载贤集网APP入驻自媒体

在Ddelphi中,关于多线程的编程多是verrideTThread类。这里介绍另外一种方法,用BeginThread创建安全线程。

一般编程都知道CreateThread是window提供的API函数,而BeginThread是Delphi对CreateThread进一步的封装,内部实现时用到了CreateThread 。

实例: 
建立一个Form窗体单元,在其中放置2个Edit和button组件,代码如下:
unit Unit1;

inter

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

type

   TForm1 = class(TForm)
     Button1: TButton;
     Edit1: TEdit;
     Edit2: TEdit;
     Button6: TButton;
     Button7: TButton;
     Button2: TButton;
     Button3: TButton;
     Button5: TButton;
     Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
private
    { Private declarations }
public
    { Public declarations }
end;

var
   Form1 : TForm1;

    procedure incedit1; stdcall; //定义两个循环过程
    procedure incedit2; stdcall;

implementation

var
   th1,th2  :  cardinal;   //卡迪纳尔 无符号整型
   h1,h2    :  integer;

procedure incedit1; 
var
   i:integer; 
begin
   i:=0;
while true do
begin
     form1.edit1.text:=inttostr(i);
     i:=i+1;
end; 
end;

procedure incedit2; 
var
   i:integer; 
begin
   i:=0;
while true do
begin
     form1.edit2.text:=inttostr(i);
     i:=i+1;
end; 
end; 
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject); //启动线程 
begin
   h1:=beginthread(nil,1024,@incedit1,nil,0,th1);
   h2:=beginthread(nil,1024,@incedit2,nil,0,th2); 
end;

procedure TForm1.Button6Click(Sender: TObject); //中止线程1
begin
   terminatethread(h1,0); 
end;

procedure TForm1.Button7Click(Sender: TObject); //中止线程2
begin
   terminatethread(h2,0); 
end;

procedure TForm1.Button4Click(Sender: TObject);//唤醒线程1
begin
   resumethread(h1); 
end;

procedure TForm1.Button5Click(Sender: TObject);//唤醒线程2
begin
   resumethread(h2); 
end;

procedure TForm1.Button2Click(Sender: TObject); 
begin
   suspendthread(h1); 
end;

procedure TForm1.Button3Click(Sender: TObject); 
begin
   suspendthread(h2); 
end;

end.

最新回复

还没有人回复哦,抢沙发吧~

发布回复

为您推荐

热门交流