unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,unit2;type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; test = class(TThread) private { Private declarations } protected procedure Execute; override; end; var Form1: TForm1; dd:test; implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject); begin dd:=test.Create(false); end;procedure TForm1.Button2Click(Sender: TObject); begin dd.Suspend ; end;procedure TForm1.Button3Click(Sender: TObject); begin dd.Resume ; end; procedure test.Execute; var i:Integer; f:textfile; begin { Place thread code here } assignfile(f,'c:\aa.txt'); rewrite(f); while not terminated do begin for I:=1 to 100000000 do begin sleep(200); writeln(f,inttostr(i)); flush(f); end; end; closefile(f); end; end.
// 瞎贴一个unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,Unit2;type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1 ; T : TTest ;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject); begin T := TTest.Create ; with t do if Suspended then Resume ; end;procedure TForm1.Button2Click(Sender: TObject); begin t.Suspend ; end;procedure TForm1.Button3Click(Sender: TObject); begin t.Resume ; end;end.------------------------------------unit Unit2;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TTest = class(TThread) private { Private declarations } procedure ShowIt ; protected procedure Execute; override; public j : Integer ; constructor Create ; end;implementationuses Unit1 ;{ Important: Methods and properties of objects in VCL or CLX can only be used in a method called using Synchronize, for example, Synchronize(UpdateCaption); and UpdateCaption could look like, procedure TTest.UpdateCaption; begin Form1.Caption := 'Updated in a thread'; end; }{ TTest }constructor TTest.Create ; begin inherited Create(false) ; end ;procedure TTest.ShowIt ; begin Form1.Caption := IntToStr(j) ; end ;procedure TTest.Execute; var i : Integer ; begin { Place thread code here } for i := 0 to 1000 do begin j := i ; Synchronize(ShowIt) ; Sleep(1000) ; end ; end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,unit2;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
test = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
var
Form1: TForm1;
dd:test;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
dd:=test.Create(false);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
dd.Suspend ;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
dd.Resume ;
end;
procedure test.Execute;
var
i:Integer;
f:textfile;
begin
{ Place thread code here }
assignfile(f,'c:\aa.txt');
rewrite(f);
while not terminated do
begin
for I:=1 to 100000000 do
begin
sleep(200);
writeln(f,inttostr(i));
flush(f);
end;
end;
closefile(f);
end;
end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,Unit2;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1 ;
T : TTest ;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
T := TTest.Create ;
with t do
if Suspended then Resume ;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
t.Suspend ;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
t.Resume ;
end;end.------------------------------------unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TTest = class(TThread)
private
{ Private declarations }
procedure ShowIt ;
protected
procedure Execute; override;
public
j : Integer ;
constructor Create ;
end;implementationuses Unit1 ;{ Important: Methods and properties of objects in VCL or CLX can only be used
in a method called using Synchronize, for example, Synchronize(UpdateCaption); and UpdateCaption could look like, procedure TTest.UpdateCaption;
begin
Form1.Caption := 'Updated in a thread';
end; }{ TTest }constructor TTest.Create ;
begin
inherited Create(false) ;
end ;procedure TTest.ShowIt ;
begin
Form1.Caption := IntToStr(j) ;
end ;procedure TTest.Execute;
var
i : Integer ;
begin
{ Place thread code here }
for i := 0 to 1000 do
begin
j := i ;
Synchronize(ShowIt) ;
Sleep(1000) ;
end ;
end;end.
再 Button2 ; //暂停
后 Button3 ; //唤醒