多线程使用VCL组件的问题 ( 积分: 200 )

  • 主题发起人 主题发起人 zy61
  • 开始时间 开始时间
Z

zy61

Unregistered / Unconfirmed
GUEST, unregistred user!
VCL组件是否不能在多个线程中使用,只能在VCL主线程中使用?
我在写一个ActiveX的控件,但是它在IE中运行时,由于IE中的多个窗口分别在不同线程中(进程是同一个),所以有些VCL组件不正常,比如TPopupMenu就只能在第一个控件中弹出,在其他窗口的控件中不能弹出,不知道大家有什么方法可以处理。我是用delphi5写的,谢谢
 
VCL组件是否不能在多个线程中使用,只能在VCL主线程中使用?
我在写一个ActiveX的控件,但是它在IE中运行时,由于IE中的多个窗口分别在不同线程中(进程是同一个),所以有些VCL组件不正常,比如TPopupMenu就只能在第一个控件中弹出,在其他窗口的控件中不能弹出,不知道大家有什么方法可以处理。我是用delphi5写的,谢谢
 
delphi 的帮助文档里写明了,在线程中使用 vcl 控件必须用 synchronize 方法.
你可以先定义一个 procedure ,里面完成调用 vcl 控件的操作,
然后在线程中用 synchronize(方法名) 来调用.
 
谢谢helloqiner的关注
但是作为一个ActiveX控件我怎样决定如何创建,因为它是在网页上创建的,而不同的网页在不同的线程,导致我的VCL控件,就是ActivexForm在不同的线程中。
 
接受答案了.
 
后退
顶部