之前写了一些关于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();

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

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

你还记不记得我们是怎么创建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();

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

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

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

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

  1. php 去除实体,php – 如何在学说中正确关闭实体管理器

    我在Doctrine2脚本中遇到了内存泄漏问题,这个问题通常是由一段代码消除内存问题造成的. 在我知道你可以(并且应该)清除实体管理器之前,每20次迭代我做了以下事情: if ($this->u ...

  2. 正确关闭线程池:shutdown 和 shutdownNow 的区别

    点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/xiewenfeng520/ article/details/107013342 前言 本章分为两个议题 如何正确关闭线程池 s ...

  3. Java多线程学习九:如何正确关闭线程池?shutdown 和 shutdownNow 的区别

    如何正确关闭线程池?以及 shutdown() 与 shutdownNow() 方法的区别?首先,我们创建一个线程数固定为 10 的线程池,并且往线程池中提交 100 个任务,如代码所示. 复制代码 ...

  4. mysql正确关闭slave取消主从

    正确关闭slave步骤 执行STOP SLAVE语句 使用SHOW STATUS检查slave_open_temp_tables变量的值 如果值为0,使用mysqladmin shutdown命令关闭 ...

  5. nodemanager不能正常关闭_在什么情况下不能使用罗茨风机及如何正确关闭罗茨风机...

    锦工风机给大家介绍一下在什么情况下不能使用罗茨风机及如何正确关闭罗茨风机在什么情况下不能使用罗茨风机: 1.机器故障 这一点其实不用说,因为你知道,设备是存在故障确实不能使用,但会有人感觉有轻微的故障 ...

  6. 如何关闭华为自动杀进程_手机自动扣费该如何删除,教你正确关闭,我们要知道!...

    手机自动扣费该如何删除,教你正确关闭,我们要知道! 随着社会的不断发展扩张,技术的进步和经济的发展都让人们的生活有了很大的改观.大家会发现,人们的生活方式较以前有了很大的改变,像出行方面随着打车APP ...

  7. 和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例(转)

    和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例 今天开始,我打算开始学习WWF,从网上搜索到了部分相关资料,也找到了一些文档和实验.但是,资料以 ...

  8. 【记录】IDEA未正确关闭导致打开报错,进不了主界面,含解决办法

    [记录]IDEA未正确关闭导致打开报错,进不了主界面,含解决办法 错误提示 解决方案 参考 错误提示 截取了错误的主要部分 java.util.concurrent.CompletionExcepti ...

  9. 区块链DApp从零开始学 (二) | 超详细 DApp创建 | 发行代币token | 宠物领养

    初学记录 · 欢迎交流 区块链DApp从零开始学 (一) | DApp抓包 区块链DApp从零开始学 (二) | 超详细 DApp创建 | 发行代币token |宠物领养 区块链知识 (一) | 实例 ...

最新文章

  1. 「AI初识境」什么是深度学习成功的开始?参数初始化
  2. 卢京潮自动控制原理ppt_视觉定位系统在贴片机中的使用与原理作用
  3. Java遍历指定文件夹,在屏幕打印所有以abc结尾的文件
  4. 【python】动态调用函数名
  5. 前端学习(3099):vue+element今日头条管理-使用富文本比编辑器
  6. [转载] java对象在内存中的结构
  7. 动态规划 —— 区间 DP
  8. 【 批量爬取下载geo.datav.aliyun.com下地图的json文 】
  9. 阿里巴巴集团CTO王坚:云计算让理想平等
  10. matlab单元刚度矩阵,求助:关于有限元三角形单元合成总刚度矩阵怎么处理
  11. linux命令行 teamview,linux centos 命令行 安装 teamviewer 启动 停止
  12. 埃森哲互动并购了56家广告公司
  13. 使用instsrv.exe和srvany.exe创建windows服务
  14. Python实现线性回归拟合并绘图
  15. 阿狸html浪漫代码,好看可爱的阿狸空间留言代码_阿狸 你的乖巧我学不来
  16. win10定时关机c语言,win10定时关机在哪?win10设置定时关机的三种方法
  17. 成就系统实现(二)-功能分析
  18. 漫画:我是程序员,总想打测试工程师怎么办?
  19. 【DP】西北大学集训队选拔赛(重现赛) B 饱和式救援
  20. Unity 项目游戏退出代码

热门文章

  1. STM32 keyboard USB HID键盘功能的实现
  2. mysql insert 阻塞_insert遭遇阻塞
  3. cannot be resolved to a type 错误解决
  4. C# int uint long ulong byte sbyte float double decimal 范围,及类型!
  5. 信息增益,信息增益率,Gini
  6. 汽车电子功能安全标准ISO26262解析(五)——FTA
  7. 多线程之生产者消费者模型
  8. linux内核工程导论,Linux内核工程导论–网络:TCP:netlink与tcp_diag编程
  9. raspberry树莓派用USB麦克风录音,只有杂音的问题
  10. 电脑耳机有杂音怎么办?【详解】