描述:
是不是CoUninitialize一呼叫程序就要退出阿?!我的一个程序要用户能够反复使用,如果不呼叫CoUninitialize会有一些系统库没有退出来,第二次进去的时候程序失灵,可是呼叫了CoUninitialize程序立马退出了!!真是头痛!有没有大侠能够解决这个问题?重谢!!
解决方案1:
CoUninitialize和CoInitialize()是配对的,而且与线程相关,
怀疑是你调用CoUninitialize导致程序中某些Com对象调用失败,从而
导致应用程序崩溃
rt
解决方案3:gz
解决方案4: 在程序启动时 InitInstance时调用CoInitialize,
在程序退出时调用CoUni....
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.
上面的这段话摘自MSDN,话中对CoUninitialize的功能进行了简单的说明,从中我们可以得到,当调用CoUninitialize这个函数的时候,会关掉其所做的线程。那么如果你的应用在运行的时候只有一个进程,而且该进程也仅有一个线程的话,那么调用该函数自然会导致整个应用的退出。我想,你在你的应用中创建一个单独的线程来进行装载DLL的有关操作,应该可以解决你的问题。
以上仅仅是我根据MSDN提供的资料所作的简单分析,没有去验证,可能不对,请谅解。
最好不要多次的调用CoUninitialize!这样从效率来说不高!
如果不呼叫CoUninitialize会有一些系统库没有退出来,这和你第二次进入能有什么冲突呢?就不能想办法不让他冲突?
在程序退出的时候调Couninitialize.
解决方案8:你没有设计好程序的可重入问题,至于这种函数,也许微软在设计时,就没想到有人会在一个进程中,反复多次的init和uninit。
您可能想查找下面的文章:
- CoUninitialize抛出异常
- 不调CoUninitialize会否有问题?
- 线程结束时运行到这里CoUninitialize退不出去,卡死在这里?
- 程序中用了CComPtr的话,还需要CoInitialize和CoUninitialize吗?
- 关于CoUninitialize
- 如果我不调用CoUninitialize发现Debug并没有报告内存泄漏啊
- CoIntialize和CoUninitialize问题
- 该死的CoUninitialize
- CoUninitialize执行完,函数返回时出错,请帮助!
- 一个函数中有CoInitialize,就一定要有CoUninitialize吗?可不可以分开?