关于线程参数的一个问题

liu9527 2002-07-30 03:31:02
有一个总是要问大家
线程在创建时,自动调用它本身的Excute方法来完成各种操作,那么要向线程传入的参数在哪儿传入呢,我想在线程中生明几个公r有变量,在外部调用时,直接赋值,如
thd1:=thread1.create(false);
thd1.sname:='liuxiao';
thd1.spath:='e:\';
但是实际上当Create时,线程就已经运行了,后面的赋值就可能不同步的,那么是不是只有在Create时用,作为参数一并传入,

thd1:=thread1.create(false,'liuxiao','e:\');
而在线程的Create过程中,一个一个接收传入的参数吗?
...全文
51 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ehom 2002-07-30
  • 打赏
  • 举报
回复
Jerry529(淡泊)那样简单处理下,就先不调用Execute()


gfzhx 2002-07-30
  • 打赏
  • 举报
回复
如果是静态参数,那么重载Create方法,把你的参数加进去就可以了,如果是动态参数,你可以通过消息来传递,PostThreadMessage()可以给线程发送消息,当然了,你的Execute()方法中必须能够接收消息,否则发送消息也是没有用处的。我常用消息来传递参数,这样线程就可以一直处于后台运行状态了,而且效率很高(用了MsgWaitForMultipleObjects API)。
Jerry529 2002-07-30
  • 打赏
  • 举报
回复
thd1:=thread1.create(true);
thd1.sname:='liuxiao';
thd1.spath:='e:\';
thd1.resume;
yansea 2002-07-30
  • 打赏
  • 举报
回复
可以create(false)的。
若说参数传递,还是重载create自己处理比较好。就象你自己写的那样。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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