CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

线程内访问vcl组件的疑问,大家讨论讨论

楼主dragonfox()2005-03-02 18:50:52 在 Delphi / VCL组件开发及应用 提问

我看了很多关于线程内访问vcl组件时的文章说都必须使用Synchronize到主线程中执行,我想请问一下象我这样的情况,使用Synchronize是必须的吗?我ShowModal一个窗口,然后在这个窗口开启一个线程(以下称为子线程),同时通过一些方法让该窗口无法手工关闭掉,只有线程执行完毕,才自动关闭,我在子线程中执行Execute时,需要更新显示,所以需要在子线程内访问Vcl组件,设置一些label的值之类的,这样的操作需要用Synchronize来访问vcl组件吗?我现在的代码都是直接访问的,没有出现任何问题,有没有什么隐患呢?  
  (我使用直接访问还是碰到过一个错误,那就是主窗体有listview,我在子线程中取哪些行被选中了时,有时候会误判,特别是我在子线程执行过程中,把我的程序和其他程序互相切换,误判率特高,后来改用Synchronize就没有出现了) 问题点数:100、回复次数:7Top

1 楼real_name(*真名)回复于 2005-03-02 19:46:41 得分 5

多好的一个话题    
  怎么还没人讨论   呢?Top

2 楼li_chengbin(小李飞刀)回复于 2005-03-02 20:15:02 得分 10

VCL界面显示操作时,应该Synchronize进行同步Top

3 楼rouqing(*冰雨&双子座奇缘*)回复于 2005-03-02 20:17:01 得分 10

Synchronize(Form1.Edit1.Text);线程同步哦Top

4 楼rouqing(*冰雨&双子座奇缘*)回复于 2005-03-02 20:17:59 得分 10

在delphi,cb里边就是这样的,访问vcl就要这样写Top

5 楼vpoor(kIngAge)回复于 2005-03-02 20:53:22 得分 35

如果无临界数据交集情况出现,不用Synchronize也不会有问题,不过为了以后扩展方便,还是加上吧,套句话说就是线程同步既然存在就有它的价值~~~hohoTop

6 楼cybercake(数字蛋糕)回复于 2005-03-02 22:25:04 得分 30

因为你自己不可能完全了解VCL的所有机制,因而在你自己的线程中难免会出现访问冲突。Synchronize就是因为这个而存在的。  
   
  其他的就如楼上所说了。Top

7 楼dragonfox()回复于 2005-03-02 23:13:02 得分 0

明白了,谢谢大家。但是可恨的Synchronize居然不能传参数进去,也不能传参数回来,每次要取vcl组件的值都要定义很多私有变量,越来越觉得做软件象体力活了。Top

相关问题

  • 多线程使用VCL组件的问题
  • 线程疑问??????
  • 线程疑问
  • 多线程调用组件
  • 关于线程的疑问
  • 递归开线程疑问
  • 有关VCL组件
  • 关于组件的一点疑问?
  • 这个VCL组件不错!
  • 【请教】VCL组件问题

关键词

  • 线程
  • 组件
  • vcl
  • 执行
  • vcl组件
  • 访问
  • synchronize
  • 子线程
  • 出现
  • 使用

得分解答快速导航

  • 帖主:dragonfox
  • real_name
  • li_chengbin
  • rouqing
  • rouqing
  • vpoor
  • cybercake

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo