thread中需要在implementation下定义全局变量,创建多个实例时冲突!详见帖子

cjfzy 2007-04-24 11:45:04
我的代码:
type
Taa = class(TObject)
public
。。。
end;
Tbb = Calss(TThread)
public
...
end;
implementation
var cc:integer;
{aa}
procedure TAA....
begin

cc:=1;
end;
{bb}
procedure TBB....
var aa:Taa;
begin
aa:=Taa.create;
cc:=2;
end;

end.

因为变量cc在Taa和TBB中都要用,所以定义在implementation中,但创建多个TBB线程时,cc就是最后一个创建线程中的值,请问cc应该怎么定义才能每个线程独有的!


...全文
217 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjfzy 2007-04-24
  • 打赏
  • 举报
回复
TAA中怎么访问TBB中的变量呢?
HsWong 2007-04-24
  • 打赏
  • 举报
回复
TThread也是一个类,可以自由定义其函数成员及变量.跟其它类一样.
如果要与外界通信,可以分布接口,变量,事件等
chenzhuo 2007-04-24
  • 打赏
  • 举报
回复
Tbb = Calss(TThread)
private
cc: Integer;
public
...
end;
cjfzy 2007-04-24
  • 打赏
  • 举报
回复
怎么传?
procedure tform1.addthread;
var
bb:TBB;
begin
bb:=Tbb.create(false);
Tbb.classInstance:=bb.classInfo;
end;

procedure Tbb.addTaa;
var aa:Taa;
begin
aa:=Taa.create;
aa.createClass:=classinstance;
end;

procedure Taa.dowork;
begin
cc:=Tbb(CreateClass).cc;
end;
这样可以吗?
constantine 2007-04-24
  • 打赏
  • 举报
回复
把tbb做为参数传进去不就得了
cjfzy 2007-04-24
  • 打赏
  • 举报
回复
TBB是在主窗体里创建的(创建了多个TBB),Taa是TBB创建的(每个Tbb中创建多个Taa),Taa不知道创建他的Tbb的对象是什么。
Taa怎么访问创建他的Tbb中的变量呢?
HsWong 2007-04-24
  • 打赏
  • 举报
回复
只要是公共的变量,其它地方只要知道实体,那就可以访问了
这个你应该明白的。 就好像Form1访问Form2的变量一样。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧