Multithreading wxapp在mac中运行一段时间后变得无响应
我有一个wxApp实现,其中wxFrame嵌入了一个CEF浏览器。应用程序显示初始屏幕并加载所有良好的内容。但是,经过一定延迟(不一致)后,应用程序框架将变得无响应,并且不会处理任何事件。我已经放置了一个Multithreading wxapp在mac中运行一段时间后变得无响应,multithreading,macos,timer,wxwidgets,chromium-embedded,Multithreading,Macos,Timer,Wxwidgets,Chromium Embedded,我有一个wxApp实现,其中wxFrame嵌入了一个CEF浏览器。应用程序显示初始屏幕并加载所有良好的内容。但是,经过一定延迟(不一致)后,应用程序框架将变得无响应,并且不会处理任何事件。我已经放置了一个wxTimer来计算它所花费的时间,它在28秒到60秒之间变化。这也是不调用计时器事件的地方。现在,当我按下窗口上的x或最大化图标时,所有挂起的事件都会被发送,应用程序会再次激活。 以下是我尝试过的选项: 调用wxTheApp->ProcessPendingEvents()(每1秒运行一次)
wxTimer
来计算它所花费的时间,它在28秒到60秒之间变化。这也是不调用计时器事件的地方。现在,当我按下窗口上的x
或最大化图标时,所有挂起的事件都会被发送,应用程序会再次激活。
以下是我尝试过的选项:
- 调用
wxTheApp->ProcessPendingEvents()计时器上的代码>(每1秒运行一次)
- 尝试并研究了
方法。这也会在一段时间后暂停onIdle
我的猜测是,应用程序主线程由于某种原因暂停,并且无法恢复,除非任何UI操作触发它。应用程序的结构是什么?也就是说,它是否使用wx事件循环?@Nareshkumar,什么版本的CEF?您正在使用wx的CEF分支吗?@Igor CEF-
76.1.13
和wx-v3.1.3
@VZ。它使用wx事件循环,并通过计时器通过cefdoopWork
泵送CEF事件。(每10毫秒运行一次)@Nareshkumar,检查wx存储库。有一个GSoC项目将CEF API引入wx。不幸的是,它还不完整,但是如果您获取当前的Git主机,检查分支并构建CEF示例——您可能能够找出代码的错误。