关于COM接口初始化与释放的问题?

时间:2022-02-26 17:29:33
在线程中需重新初始化COM接口,代码如下:
CoInitialize(NULL);

请问在线程中需要释放吗?
CoUninitialize();

什么情况下需要调用CoUninitialize();
不调用CoUninitialize函数,会有什么影响?

4 个解决方案

#1


CoInitialize(NULL); 与CoUninitialize();一一对应

CoUninitialize : Closes   the   COM   library   on   the   current   thread,   unloads   all   DLLs   loaded   by   the   thread,   frees   any   other   resources   that   the   thread   maintains,   and   forces   all   RPC   connections   on   the   thread   to   close.  
也就是说你不调用CoUninitialize的话 就可能会有些资源什么的没有释放  还可能造成其他别的问题  我曾经就是忘记CoUninitialize  然后程序退出时候异常终止了 

#2


最好在app初始化的时候调用CoInitialize,app退出的时候再CoUninitialize,这样就不用在每个单独的线程来一次

#3


CoInitialize(NULL)与CoUninitialize()我还遇到过这种问题:http://topic.csdn.net/u/20080623/21/e001e8c2-1d40-4120-a2ac-58340e6fd882.html
有兴趣你看一下

#4


总的来说有点复杂,lz应该查查  套间  套间线程  *线程的概念。
一言两语很难说清楚,牵涉的东西有点多。

#1


CoInitialize(NULL); 与CoUninitialize();一一对应

CoUninitialize : Closes   the   COM   library   on   the   current   thread,   unloads   all   DLLs   loaded   by   the   thread,   frees   any   other   resources   that   the   thread   maintains,   and   forces   all   RPC   connections   on   the   thread   to   close.  
也就是说你不调用CoUninitialize的话 就可能会有些资源什么的没有释放  还可能造成其他别的问题  我曾经就是忘记CoUninitialize  然后程序退出时候异常终止了 

#2


最好在app初始化的时候调用CoInitialize,app退出的时候再CoUninitialize,这样就不用在每个单独的线程来一次

#3


CoInitialize(NULL)与CoUninitialize()我还遇到过这种问题:http://topic.csdn.net/u/20080623/21/e001e8c2-1d40-4120-a2ac-58340e6fd882.html
有兴趣你看一下

#4


总的来说有点复杂,lz应该查查  套间  套间线程  *线程的概念。
一言两语很难说清楚,牵涉的东西有点多。