type
TTest=class(TThread)
private
procedure TTest_value;
public
Id : integer;
protected
procedure Execute; override;
end;
var
Form1: TForm1;implementation{$R *.dfm}
procedure TTest.TTest_value;
begin
id:=id+1;
showmessage(inttostr(id));))//显示ID老是为1
end;procedure TTest.Execute;
begin
Synchronize(TTest_value);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
dd: TTest ;
begin
dd:=TTest.Create(true);//ID 值为1
dd.Resume;
dd:=TTest.Create(true);//ID还是为1 本来是想让他在这儿加1,即为2
dd.Resume;
end;看看是哪儿错了,显示ID总是为1不知道怎么办了。
TTest=class(TThread)
private
procedure TTest_value;
public
Id : integer;
protected
procedure Execute; override;
end;
var
Form1: TForm1;implementation{$R *.dfm}
procedure TTest.TTest_value;
begin
id:=id+1;
showmessage(inttostr(id));))//显示ID老是为1
end;procedure TTest.Execute;
begin
Synchronize(TTest_value);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
dd: TTest ;
begin
dd:=TTest.Create(true);//ID 值为1
dd.Resume;
dd:=TTest.Create(true);//ID还是为1 本来是想让他在这儿加1,即为2
dd.Resume;
end;看看是哪儿错了,显示ID总是为1不知道怎么办了。
解决方案 »
- clientdateset 如何更新
- 100分快求 用delphi7组件Image,TOpenPictureDialog打开较大图片的时候就会出错,哪位大侠能解决一下?
- delphi 滚动条的问题~single型数值不能设定
- delphi7在winxp和windows server2003下的窗体调用问题?
- 请问在如何获得一个表的列数以及一个数据库中表的个数。
- 一个程序如何控制另一个程序?
- 这样的数据库如何设计?----人事管理
- 提个问题:SQL里有没有像ACCESS里那样 如果数据删除多了,数据库会非常大的情况??
- 请问怎样能够从DLL中导出置于其中的多个类
- c/s client中怎么访问调用Server中定义的method?
- 關於應用服務器的兩個難題,請大蝦相助
- 请问这段代码错在那里
var
dd: TTest ;
begin
dd:=TTest.Create(true);//ID 值为1
//dd.Resume;
//dd:=TTest.Create(true);//这里又创建一个线程了,当然ID为1dd.Resume;
end;
begin
Synchronize(TTest_value);//因为你这句只执行了一次。
end;改为:
procedure TTest.Execute;
var i:integer;
begin
for i:=1 to 5000 do
Synchronize(TTest_value);//这样可以循环5000次。
end;还有你所说的ID为ttest的私有成员变量。
每个ttest对象一个。
你建立了两个ttest对象,所以它们的ID都为默认值。dd:=TTest.Create(true);//ID 值为1
dd.Resume;
dd:=TTest.Create(true);//ID还是为1 本来是想让他在这儿加1,即为2这样用有可能发生问题,当线程退出时。如果线程对象没有释放。可能发生内存丢失。