一个可以
多线程调用com对象如果控制不好会有很多问题,我就遇到这种问题,一直没解决,关注!

解决方案 »

  1.   

    多线程调用com对象如果控制不好会有很多问题
    真的??
    难道如上面调用多现成有问题吗,如果将AfxOleInit()去掉 就返回S_OK了
    但是否回有其他问题呢
      

  2.   

    了解了一下,我不想再搞mts了
    经过实验,去掉AfxOleInit()对程序运行有影响,但如与CoInitializeEx(NULL,COINIT_MULTITHREADED)同时存在又返回A previous call to CoInitializeEx specified a different concurrency model for this thread这算是成功还是失败?我该用COINIT_MULTITHREADED,还是COINIT_APARTMENTTHREADED 
    或则我这程序更本不用考虑多线程,用CoInitialize就可以了
      

  3.   

    可否说点道理先?
    我看过msdn,AfxOleInit()实际就是调用CoInitializeEx(NULL,COINIT_APARTMENTTHREADED 
    )
    因此无法再用多现成
    CoInitializeEx(NULL,COINIT_MULTITHREADED)
     但我去掉AfxOleInit(),确实对运行有影响,----  一个对话框启动不起来?
      

  4.   

    使用CoInitializeEx初始化一个APERTMENT,在APERTMENT创建对象会遇到跨APERTMENT调用问题。
    有两种
    STA就是单线程APERTMENT
    MTA多线程线程APERTMENT,
    支持MTA的组件自身实现线程安全,允许多个线程访问
    而STA的组件,在APERTMENT内只允许一个线程进入,所以跨套间访问接口需要调度接口指针而不能够直接访问。
      

  5.   

    我发现,缺少AfxOleInit可能对afxinitrichedit有影项,再说,mshtml也是个笨蛋,遇到COLSPAN就分不请东西南北了,,把本该是第3列的内容认为是,第二列,我????????
    <TD WIDTH="49%" HEIGHT="18" COLSPAN="2"><FONT FACE="宋体">11111</FONT></TD>