CefShutdown выбросить исключение - PullRequest
0 голосов
/ 04 июня 2019

Исключение:

Exception thrown at 0x76EBC762 (KernelBase.dll) in MyMFC.exe: 
0x0000071A: The remote procedure call was canceled, or if a call time-out 
was specified, the call timed out.

Я столкнулся с проблемой при попытке интегрировать CEF в программу MFC.

ОС: windows10, VS2017, cef_binary_73.1.13.

Настройка Cef выглядит следующим образом:

CefSettings settings;
settings.multi_threaded_message_loop = false;
settings.ignore_certificate_errors = true;
settings.remote_debugging_port = 9000;
settings.external_message_pump = true; 

CefDoMessageLoopWork работает в MFCцикл обработки событий.

Я скачал файлы pdb.Стек вызовов при выходе из программы:

libcef.dll!content::ScreenlockMonitorDeviceSource::SessionMessageWindow::~SessionMessageWindow() Line 37    C++ Symbols loaded.
libcef.dll!content::ScreenlockMonitorDeviceSource::~ScreenlockMonitorDeviceSource() Line 15 C++ Symbols loaded.
libcef.dll!content::ScreenlockMonitor::~ScreenlockMonitor() Line 25 C++ Symbols loaded.
libcef.dll!std::unique_ptr<content::ScreenlockMonitor,std::default_delete<content::ScreenlockMonitor> >::~unique_ptr() Line 2267    C++ Symbols loaded.
libcef.dll!content::BrowserMainLoop::~BrowserMainLoop() Line 556    C++ Symbols loaded.
libcef.dll!content::BrowserMainLoop::~BrowserMainLoop() Line 552    C++ Symbols loaded.
libcef.dll!content::BrowserMainRunnerImpl::Shutdown() Line 236  C++ Symbols loaded.
libcef.dll!CefMainDelegate::ShutdownBrowser() Line 718  C++ Symbols loaded.
libcef.dll!CefContext::FinalizeShutdown() Line 587  C++ Symbols loaded.
libcef.dll!CefShutdown() Line 272   C++ Symbols loaded.

Кажется, что программа вызывает исключение при удалении объекта SessionMessageWindow:

SessionMessageWindow::~SessionMessageWindow() {
  if (window_) {
    ::WTSUnRegisterSessionNotification(window_->hwnd());  <- HERE THROW EXCEPTION!
    window_.reset();
  }
}

Я проверил переменную window_, это былосозданный внутри CefInitialize, который создаст окно для получения уведомлений об изменении сеанса, а затем зарегистрирует окно с ::WTSRegisterSessionNotification(window_->hwnd(), ...)

Я гуглил несколько дней и нашел несколько ссылок об Исключении CefShutdown, но это всеВ этом случае все по-другому, что вызвано ::WTSUnRegisterSessionNotification(window_->hwnd());

У кого-нибудь есть идеи?Заранее спасибо.

...