VB写的DLL,通过IDispatch调用,可是在线程内部用CreateDispatch会出错啊!
哪位大虾会请指点一下,谢谢啦!~~~

解决方案 »

  1.   

    为线程建一个住所,也就是要调用CoInitialize,线程退出时调用CoUninitialize。
      

  2.   

    IDispatch的不是要用CreateDispatch调用吗?也能用CoInit吗?
      

  3.   

    多线程调用同一个COM对象,则这个COM对象应该在多线程公寓(有的也叫套间,住所)里,也就是调用这人COM对象的所有线程都必须在线程启动时调用CoInitializeEx(0,COINIT_MULTITHREADED).最好是在建这个COM对象时该对象也是处于Free Threading Model,且这个COM对象要做到负责同步自已内部公共数据的访问(类似于多线程中对公共数据访问的同步)。
      

  4.   

    如果创建的套间类型和你实际的访问这个COM对象的线程模型不一致就会产生这样的问题.
      

  5.   

    回复人: zxyjyzxyjy(星星) ( ) 信誉:132  2005-11-16 7:58:11  得分: 0  
     
     
       
    多线程调用同一个COM对象,则这个COM对象应该在多线程公寓(有的也叫套间,住所)里,也就是调用这人COM对象的所有线程都必须在线程启动时调用CoInitializeEx(0,COINIT_MULTITHREADED).最好是在建这个COM对象时该对象也是处于Free Threading Model,且这个COM对象要做到负责同步自已内部公共数据的访问(类似于多线程中对公共数据访问的同步)。  
     
    如何启用多线程呢?请给个小例子吧