客户端调用CreateDispatch()的时候,没有指明是STA还是MTA啊?有人清楚这个问题吗?请帮忙,谢谢

解决方案 »

  1.   

    使用什么线程模型是由Com组件自己决定的, 在注册表的InprocServer32\ThreadingModel可查到
      

  2.   

    恩 这个我知道,可是客户端调用一般的COM要指定是STA模式还是MTA模式,通过CoInitializeEx(NULL,COININ_APARTMENTTHREADED)
    CoInitializeEx(NULL,COININ_MULTITHREADED)
    的不同来决定COM的线程模型。可是对与实现IDispatch的组建,好像一般直接通过CreateDispatch()就创建了,没有经过上面一步指定线程模型。用CreateDispatch()产生COM,到底是STA模式,还是MTA模式呢?
      

  3.   

    "好像一般直接通过CreateDispatch()就创建了"
    不对,肯定初始化com库才行
    vc可以调用AfxOleInit进行初始化然后,组件存在的线程模型就是调用CreateDispatch()的线程模型
    至于是不是线程安全的,那就是另外一回事了