关于 vcl 和 Synchronize 的问题(200分)

  • 主题发起人 主题发起人 海之魂
  • 开始时间 开始时间

海之魂

Unregistered / Unconfirmed
GUEST, unregistred user!
我想问:
1、都有那些控件是vcl控件(在delphi有面板上)
好象只要是控件都是vcl
2、如果上面的一条成立,那么好象用只要用vcl控件,多线程和单线程就没区别了(特别
是当vcl控件运算中占时间最多时)
3、是不是网络控件(不可视的)都是vcl控件,与网络控件(运算中均占时较多)有关的多线程
如何写,能给我个多线程发email有例子吗??(另有分)
 
1、Delphi6以上版本引入了两套,一是VCL,一是CLX
你只要建立的是VCL Application,那你在面板上看到的都是VCL组件,反之则是CLX组件
控件是指可视的组件,有两种,一是Delphi自己画的,另一种是对Win32控件的封装
2、对界面的更新都只能在主线程中进行,这样才不会冲突,如果在这种情况下,多线程和
单线程是一样,都要靠主线程对界面更新。
3、可以看看Indy的源代码,关于Socket的,最好的入门例子。[:)]
 
楼上说得不错。
你应当去看看这方面的书呀!
对VCL来说,某种意思上,单线程与多线程是没有区别的。
因为VCL不支持多线程。
多线程要访问VCL控件要用Synchronize切换到主线程来执行.
 
那是不是不涉及界面更新的就不用Synchronize啦
Indy控件不涉及界面更新(不可视)是不是可用于多线程(不用Synchronize)!
还有CLX控件是不是也不支持多线程
谢谢
 
不涉及界面更新当然就不用Synchronize去切换了。
CLX跟VCL是差不多的
 
真的不涉及界面更新当然就不用Synchronize去切换了吗,我怎么有点怀疑,请各位指点!!
 
Synchronize的作用是切换到主线程去执行你的代码,一般用于界面更新
如果没有界面更新,就不需要用Synchronize方法
线程间的数据访问冲突问题有另外的解决方法,如事件、临界区、信号量等等
 
那么是不是Indy控件(还有其它不可视控件)用于多线程时都不用考虑Synchronize?
将信将疑!
 
>>真的不涉及界面更新当然就不用Synchronize去切换了吗,我怎么有点怀疑,请各位指点!!
有些是不涉及界面的,如Tlist,就不是线程安全的,当然也不是用Synchronize访问的。
具体的还是看Delphi帮助中的说明
 
>>那么是不是Indy控件(还有其它不可视控件)用于多线程时都不用考虑Synchronize?
如果没有界面更新,就不需要用Synchronize方法
线程间的数据并发访问问题有另外的解决方法,如事件、临界区、信号量等等
另外建议你找本讲线程编程的书看看。
 
能不能推荐一本好书啊
 
后退
顶部