unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TMainForm = class(TForm)
Button1: TButton;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure ThreadsDone(Sender:Tobject);
public
{ Public declarations }
end;
TFooThread = class(TThread)
protected
procedure Execute;override;
end;var
MainForm: TMainForm;implementation{$R *.dfm}
const maxsize = 128;
var
NextNumber : Integer;
DoneFlag : Integer;
GlobalArray : array[1..maxsize] of Integer;function GetNumber:integer;
begin
Result := NextNumber;
inc(NextNumber);
end;procedure TFooThread.execute;
var
i:Integer;
begin
OnTerminate := MainForm.ThreadsDone;
for I:= 1 to maxsize do
begin
GlobalArray[i]:=GetNextNumber;
sleep(5);
end;procedure TMainForm.Button1Click(Sender: TObject);
begin
TFooThread.Create(False);
TFooThread.Create(False);
end;procedure TMainForm.ThreadsDone(Sender: Tobject);
var
i:Integer;
begin
inc(DoneFlag);
if DoneFlag = 2 then
for i:=1 to maxsize do
ListBox1.Items.Add(IntToStr(globalArray[i]));
end;end.
这是书上的一个实例,把代码写在一起,小弟实现不了,谁能给我把实现的代码写一下;
不要这样写在一起,分开写;感激!!!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TMainForm = class(TForm)
Button1: TButton;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure ThreadsDone(Sender:Tobject);
public
{ Public declarations }
end;
TFooThread = class(TThread)
protected
procedure Execute;override;
end;var
MainForm: TMainForm;implementation{$R *.dfm}
const maxsize = 128;
var
NextNumber : Integer;
DoneFlag : Integer;
GlobalArray : array[1..maxsize] of Integer;function GetNumber:integer;
begin
Result := NextNumber;
inc(NextNumber);
end;procedure TFooThread.execute;
var
i:Integer;
begin
OnTerminate := MainForm.ThreadsDone;
for I:= 1 to maxsize do
begin
GlobalArray[i]:=GetNextNumber;
sleep(5);
end;procedure TMainForm.Button1Click(Sender: TObject);
begin
TFooThread.Create(False);
TFooThread.Create(False);
end;procedure TMainForm.ThreadsDone(Sender: Tobject);
var
i:Integer;
begin
inc(DoneFlag);
if DoneFlag = 2 then
for i:=1 to maxsize do
ListBox1.Items.Add(IntToStr(globalArray[i]));
end;end.
这是书上的一个实例,把代码写在一起,小弟实现不了,谁能给我把实现的代码写一下;
不要这样写在一起,分开写;感激!!!
将线程UNIT与窗体分离就可以了