NetEaseduilibプロセスが終了できないことがあるという問題を完全に解決します

バックグラウンド

使用時にはDuilib網易オープンソースのWindows用アプリケーションの開発時間、ますます多くの機能と一緒に、あなたは完全にプロセスから撤退ない問題が発生することがあります。

理由は次のとおりです。

  • 関連リソースが適切にリリースされていない
  • バグ
  • バックグラウンドスレッドが終了しませんでした
  • ……

現時点では、Androidのプラクティスを参照することもできます。いくつかの入り口で、システムAPIを呼び出して、プロセス全体を強制的に終了します。

私の自己を殺す

NetEaseのduilibフレームワークでは、アプリケーション全体が終了すると、クリーンアップ関数がコールバックされます。この時点で、この関数で現在のプロセスを終了するだけで済みます。

// 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);
}

おすすめ

転載: blog.csdn.net/xmcy001122/article/details/113558735