多线程中的问题

aquam 2001-06-05 09:33:00
请问,我在子线程中修改主线程中控件的属性,调用控件的方法,会不会影响线程的安全?
比如,为了显示一个队列的长度,我在子线程中修改主线程中Label的Caption属性显示。
还有,调用主线程中的TQuery控件的方法向数据库写数据。
谢谢
...全文
108 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
TR@SOE 2001-06-06
  • 打赏
  • 举报
回复
VCL绝大多数不是线程安全的。必须使用Synchronize()方法。
wjzhuang 2001-06-06
  • 打赏
  • 举报
回复
vcl不全是线程安全的(bcb5)
ciml 2001-06-05
  • 打赏
  • 举报
回复
我问一下各位,怎么给给线程的终止事件添加代码?
comanche 2001-06-05
  • 打赏
  • 举报
回复
不一定,VCL是线程安全的(Delphi5),如果你access 主线程上的东东,会让子线程相互等待,很明显,就好像所有子线程都停在那等,你可以用个Edit试试(不要用synchronize,它很安全)。

但VCL中有一部份控件,从 TGraphicControl派生的都不是线程安全的,但你也不要用 synchromize同步,这部份的控件都有 Lock和 Unlock方法,你可能用 Label试试
孩皮妞野 2001-06-05
  • 打赏
  • 举报
回复
第二个问题参考 示例 bkquery, 好像要用一个独立的Session. 那么 ADO呢?
孩皮妞野 2001-06-05
  • 打赏
  • 举报
回复
都是这样做的嘛。 记住用Synchronize(), 其它没问题。
wjzhuang 2001-06-05
  • 打赏
  • 举报
回复
不好意思,少打了几个字:
"特别是使用vcl,尽量不要使用线程不安全的vcl和使用操作vcl的主线程"
改为:
特别是使用vcl,尽量不要使用线程不安全的vcl,而应该使用vcl主线程来负责操作vcl控件
wjzhuang 2001-06-05
  • 打赏
  • 举报
回复
叶老大没发现问题那应该可以.
不过我觉得你这种操作方式不好,如果你在多个线程中使用了一些共同变量,那就应该有相应的保护措施.
特别是使用vcl,尽量不要使用线程不安全的vcl和使用操作vcl的主线程.不然很容易出问题的.
看你的描述,好像没必要特别去调用别的线程来完成事情.要们再写一个线程,要们安排好事件处理
或者使用公共变量.
对于线程安全有一些保护方式.你可以参考一些书籍.比如:c++builder5 开发人员指南
抬头看路 2001-06-05
  • 打赏
  • 举报
回复
会,VCL不是线程安全的。
「已注销」 2001-06-05
  • 打赏
  • 举报
回复
我用过

暂时还没发现问题

@_@

请详细了解此线程机制的朋友来解答一下

大家准备听课咯

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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