unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class (TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end ;
TMyThread = class (TThread) // 自己的线程类,从TThread 继承
private
FCount: integer ;
FOutLabel:TLabel;
protected
constructor Create(CreateSuspended: Boolean ; OutLabel:TLabel);
procedure Execute; override;
procedure Output;
end ;
var
Form1: TForm1;
implementation
{$R * .dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
TMyThread.Create( False , Label1);
TMyThread.Create( False , Label2);
TMyThread.Create( False , Label3);
end ;
{ TMyThread }
constructor TMyThread.Create(CreateSuspended: Boolean ; OutLabel: TLabel);
begin
FOutLabel: = OutLabel;
inherited Create(CreateSuspended);
end ;
procedure TMyThread.Execute;
var
i: integer ;
begin
for i: = 0 to 10000 do
begin
FCount: = i;
Synchronize(Output);
end ;
end ;
procedure TMyThread.Output;
begin
FOutLabel.Caption: = inttostr(FCount);
end ;
end .
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class (TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end ;
TMyThread = class (TThread) // 自己的线程类,从TThread 继承
private
FCount: integer ;
FOutLabel:TLabel;
protected
constructor Create(CreateSuspended: Boolean ; OutLabel:TLabel);
procedure Execute; override;
procedure Output;
end ;
var
Form1: TForm1;
implementation
{$R * .dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
TMyThread.Create( False , Label1);
TMyThread.Create( False , Label2);
TMyThread.Create( False , Label3);
end ;
{ TMyThread }
constructor TMyThread.Create(CreateSuspended: Boolean ; OutLabel: TLabel);
begin
FOutLabel: = OutLabel;
inherited Create(CreateSuspended);
end ;
procedure TMyThread.Execute;
var
i: integer ;
begin
for i: = 0 to 10000 do
begin
FCount: = i;
Synchronize(Output);
end ;
end ;
procedure TMyThread.Output;
begin
FOutLabel.Caption: = inttostr(FCount);
end ;
end .