Cef3單進程多進程設置其實就是
CefSettings settings;
settings.single_process = true; //採用單進程模式
settings.single_process = false; //採用多進程模式
cef3本身就是多進程的,也支持單進程模式,但是在單進程模式中,會出現一些問題,多進程模式下,如果配置不正常,程序可能會出現不加載網頁,或者出現多個對話框的問題。
在之前的文章中介紹的在MFC中集成CEF3打開網頁就是採用的單進程模式實現的,但最近項目上遇到一個問題,就是網頁是一個列表,翻頁的時候,每一頁都有圖片,在圖片還沒有加載完的時候,調用下一頁,程序就崩潰了,報錯提示是libcef.dll異常,完全就沒有頭緒的問題。對比了cef3自帶的simple代碼,找到配置上的不一樣,也沒有解決崩潰問題,最後嘗試使用多進程模式。
其實實現多進程模式,只需要在原來單進程模式上增加一點代碼即可。
void* sandbox_info = NULL;
CefRefPtr<SimpleApp> app = (new SimpleApp);
CefMainArgs main_args = CefMainArgs(this->m_hInstance);
int exit_code = CefExecuteProcess(main_args, app.get(), sandbox_info);
if (exit_code >= 0) {
return exit_code;
}
這句話的作用就是啓動多進程,如果啓動進程失敗,整個工程就直接退出。