描述:
一个函数中有CoInitialize,就一定要有CoUninitialize吗?可不可以分开?
我写一个程序,程序初始化的时候就要用那个COM,因此初始化的函数中会有"CoInitialize",
而程序运行过程中,这个COM都要工作,中间不能关闭它,
只有点到“CLOSE"按钮的时候,才可以执行CoUninitialize,将它是释放掉。
这样做可以吗?我看的参考程序,都是一个函数中有CoInitialize,就有CoUninitialize,没看到它们分开写过。
解决方案1:
当然可以分开写
只要保证你的com代码在CoInitialize/CoUninitialize之间就可以
每一个线程都需要用CoInitialize/CoUninitialize
解决方案3: struct InitOle
{
InitOle() { ::CoInitialize(NULL); }
~InitOle() { ::CoUninitialize(); }
} ;
InitOle _init_main_InitOle_; //define a global member to initial for main thread
InitOle _init_thread_InitOle_;//define a member in each thread proc of other threads if you want to use COM in that thread
都不分开写的,对每一个线程都需要用CoInitialize/CoUninitialize,你的做法可以