在使用com时,我在com里创建了一个子线程,当把com组件里的一个接口传进子线程后,在子线程里向这个接口添加了一些新的接口,这些新的接口是在子线程里创建的。但当子线程结束后,那些新添加的新接口竟然丢了,不知其解?也就是子线程里创建的接口随着子线程的结束全释放了。理论上应该不会丢的。不知其解?

解决方案 »

  1.   

    小心,com通常是apartment,即单线程的,同时com也有一个引用记数(你应该知道),当在线程之间直接传递接口指针时,并不能对addref进行调用,你需要使用相关的列集函数(函数名字我忘记了,查一下msdn)在线程间传递指针,否则就会出现你这样的情况,当线程销毁的时,其引用记数减一,当引用记数小于零时,就自动销毁了.