最近在看com的线程模型,有个问题搞不太清楚 
在调用com对象的线程中需要coinitialize(0),如果组件的模型是apartment的,那么com对象和客户程序在各自的STA中,如果调用com对象的方法中又通过beginthread新建了一个线程,那么这个新建线程和com对象和客户程序的关系分别是怎样的?还有就是新建的这个线程的执行函数中是否还需要在调用coinitialize

解决方案 »

  1.   

    新线程是否需要调用coinitialize,是要看这个线程内是不是要调用COM组件的方法。
      

  2.   

    只要使用了com的线程就应该先调用coinitialize吧
      

  3.   

    不知道我的关于“为什么一个进程中有多个MTA"能否给你一个满意的答案!
      

  4.   

    如果在新线程中用到了Com对象,那么就应该CoInitialize。因为线程只能访问处于与线程同一套间内的对象,而新创建的线程是不属于任何套间的。但如果这样,在将COM对象传递给自建线程时就要列集接口,在自建线程中使用时要散集。实现跨套间访问。