200分求解:线程调用COM问题(200)

  • 主题发起人 主题发起人 xcplates
  • 开始时间 开始时间
X

xcplates

Unregistered / Unconfirmed
GUEST, unregistred user!
正在写一个三层的应用,中间层是一个exe的进程内com对象,我在客户端在主进程里调用没有问题,在线程调用会提示 错误,听说还需要执行什么初始化操作,不懂,请高手指点一下。
 
贴出你的调用代码
 
你把com的初始化和反初始化放到线程之外试试线程内只调用接口
 
在你的线程单元的最后添加下面的代码试一下:initialization CoInitialize(nil);finalization CoUninitialize;需要引用 activex 单元
 
initialization的作用可能仍然是对主线程,LZ先试试,如果还不可以,那就在线程的Create部分添加CoInitialize(nil);试试。
 
先顶起来
 
我也遇到类似的问题 整个工程全部重新编译一下又可以了
 
楼上已有正确答案了
 
在线程类的execute方法中初始化COM库procedure TMyThread.Execute;begin CoInitialize(nil); try 使用COM的代码. finally CoUninitialize; end;end;在execute方法中才是针对线程的,其它的单元初始化,线程对象创建都跟本线程无关.
 
uses ActiveX在Thread Create or Execute的时候 使用conInitialize .destroy的时候用CoUninitialize.前几天项目中才写过.
 
问题仍然没有解决,再顶一下。
 
你应该把提示的错误信息写出来!
 
回头再讨论这个问题吧
 
后退
顶部