dcom客户端问题(50分)

  • 主题发起人 主题发起人 server
  • 开始时间 开始时间
S

server

Unregistered / Unconfirmed
GUEST, unregistred user!
在主窗体调用com接口没问题.
在一个线程里调用就不行了.
提示未调用coinitialize.
是什么原因.
 
线程中 uses 语句中是否加入了 uses *_tlb 即do
cm 的接口文件
 
对于在套间线程(Apartment)中使用COM函数,需要在使用前调用CoInitialize();
你的线程可能是套间线程.对于主窗口线程Delphi自动为你完成调用.
 
agree huangcy
 
线程中调用Dcom 需要手工调用coinitialize,或coinitializeEx,
调用完毕后用CoUninitialize结束.
 
默认情况下,COM对象只能在创建者线程内使用,每一线程为了支持COM必须首先
调用coinitialize或coinitializeEx。
由于主窗体属于主线程,而主线程已经由coinitialize初始化过,因此会正确运行。
可在线程启动时调用coinitialize,在线程终止时调用CoUninitialize。
 
I WANT TO KNOW.
 
多人接受答案了。
 
我在线程的OnTerminate事件中CoUnintialize,调用Thread.Terminate却不会触发OnTerminate事件,而在主线程中调用Thread.DoTerminate能触发却不能使用线程中的COM对象,怎么办?
 
后退
顶部