背景
在使用 网易开源的Duilib 开发Windows应用的时候,随着功能越加越多,可能会遇到进程退出不彻底的问题。
原因可能有:
- 没有正确释放相关资源
- BUG
- 后台线程没有退出
- ……
这个时候,我们不妨参考安卓的一些做法,在一些入口处,调用系统API强制结束整个进程即可。
Kill My Self
在网易的duilib框架中,整个应用退出,会回调Cleanup函数,此时我们只需要在该函数中结束当前进程即可:
// kill myself
HANDLE hself = GetCurrentProcess();
TerminateProcess(hself, 0);
完整代码如下:
void MainThread::Cleanup() {
// sdk dispose
cim::cleanup();
ui::GlobalManager::Shutdown();
SetThreadWasQuitProperly(true);
nbase::ThreadManager::UnregisterThread();
HANDLE hself = GetCurrentProcess();
TerminateProcess(hself, 0);
}