是不是在每个线程中都调用了CoInitialize,CoUninitialize?并且在它们之间调用接口指针的方法?应该不会吧?要是的话太可怕了!

解决方案 »

  1.   

    to:swordchueng(意笑花痴) 
    不要搞神秘主义,我可是无神论者,应该搞清楚怎么样会重入,怎么样不会重入要弄明白
      

  2.   

    从编程角度来说,COM只是一套编程的规范。当你按照COM的规范来写代码的时候,COM runtime保证你的代码不出问题;反之,如果你不按照COM的规范来写代码,那么COM runtime是不保证你的代码能正确得到COM库提供的服务的。拿线程的安全性来说,COM runtime通过装载合适的Proxy/stub来检查保证线程的安全性。要保证COM runtime装载合适的Proxy/stub,你必须遵守COM的线程规范。比如跨apartment的时候必须marshal接口指针而不能直接传接口指针等等。如果你直接传接口指针,COM runtime将不会装载对应的proxy,从而COM runtime的线程安全服务也就无从谈起。-微软全球技术中心 VC技术支持 本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款 
    (http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。 
    为了为您创建更好的讨论环境,请参加我们的用户满意度调查 
    (http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
    - ======================
      

  3.   

    .net组件哪?在.net里面用com+,可以直接在线程直接传递对象引用吗?我以前试过,好像可以的sta可以保证没有问题,mta要自己写同步代码