一起学libcef--正确关闭你创建的浏览器

                       

之前写了一些关于libcef的博客,水平很低,仅供初学者,应用者提供一些参考而已。

一起学libcef–给你的浏览器设置url

一起学libcef–一个应用libcef的简单例子(windows程序)

一起学libcef–搭建自己的libcef运行环境(Win32程序,错误C2220解决方案)

一起学libcef–源码文件介绍(VS2015运行DEMO)

每个CEF3应用程序都是相同的结构
提供入口函数,用于初始化CEF、运行子进程执行逻辑或者CEF消息循环。
提供CefApp实现,用于处理进程相关的回调。
提供CefClient实现,用于处理browser实例相关的回调
执行CefBrowserHost::CreateBrowser()创建一个browser实例,使用CefLifeSpanHandler管理browser对象生命周期。

现在就写一写如何正确关闭自己创建的浏览器。

很多人应该和我一样,把cef嵌入到了自己的客户端中。使用directui mfc qt等技术。原来你以为你退出自己的客户端时,你所创建的cef也会跟着关闭。

表面上似乎是正确的,但是,当你查看任务管理器的时候会发现,此时的cef browser进程还存在。

这就要求我们在退出客户端时,要关闭cef browser。

你很机智的找到了函数:
CefShutdown()

我们看看这个函数:

// This function should be called on the main application thread to shut down// the CEF browser process before the application exits.////*--cef()--*/void CefShutdown();
  
  
  • 1
  • 2
  • 3
  • 4
  • 5

再退出客户端的时候你调用了上面的函数。

你以为大功告成了,其实不然。

你还记不记得我们是怎么创建cef的,是不是先建立了一个消息循环,即使没有创建browser,这个messageloop依然存在的。

所以,我们再退出客户端的时候,也要记得杀死消息循环。

也很简单,你会发现一个函数:
CefQuitMessageLoop()

我们看看这个函数:

// Quit the CEF message loop that was started by calling CefRunMessageLoop().// This function should only be called on the main application thread and only// if CefRunMessageLoop() was used.////*--cef()--*/void CefQuitMessageLoop();
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

描述的很清楚了,就是要退出CefRunMessageLoop()开始的message loop。

调用以上提到的两个函数,你就会安全的退出客户端了。

水平有限,如果疑问,欢迎讨论!!!!

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值