首页 > 其他分享 >解决销毁cef时出现卡顿现象的另类解决办法

解决销毁cef时出现卡顿现象的另类解决办法

时间:2024-12-03 11:24:19浏览次数:3  
标签:cef 解决办法 Process List diffIds 进程 卡顿

项目原因,在WPF中使用cef加载网页,但是在关闭弹窗时会发生卡顿现象,经调试发现是cef销毁耗时太长从而造成的卡顿,目前在网上没有找到有效的解决方法(没精力研究源码),因此找到了一种另类的解决方法。

通过观察任务管理器发现,没有使用cef加载内容时都会有一个叫“CefSharp.BrowserSubprocess”的进程,

而在销毁时,相应的进程也会关闭,因此可以在弹窗关闭时用过杀死进程来达到快速关闭、去除卡顿现象的效果。

首先声明灵感字段记录进程id:

private List<int> OldCefBrowserSubprocessIds = new List<int>();
private List<int> NewCefBrowserSubprocessIds = new List<int>();

在窗体的初始化中记录已有的进程id:

public CefWindow()
        {
            InitializeComponent();

            OldCefBrowserSubprocessIds = GetAllCefBrowserSubprocessIds();
        }

/// <summary>
        /// 获取BrowserSubprocess所有进程的id
        /// </summary>
        private List<int> GetAllCefBrowserSubprocessIds()
        {
            Process[] processes = Process.GetProcesses();
            List<int> pids = new List<int>();
            foreach (Process process in processes)
            {
                if (process.ProcessName == "CefSharp.BrowserSubprocess")
                {
                    pids.Add(process.Id);
                }
            }
            return pids;
        }

最后在窗体销毁时获取当前窗体使用的cef进程id,然后杀死该进程:

protected override void OnClosing(CancelEventArgs e)
        {
            base.OnClosing(e);

            //通过直接杀死新窗口所启动的cefbrowserSubprocess进程,来达到快速关闭的效果
            NewCefBrowserSubprocessIds = GetAllCefBrowserSubprocessIds();
            var diffIds = NewCefBrowserSubprocessIds.Except(OldCefBrowserSubprocessIds).ToArray();
            if (diffIds != null && diffIds.Count() > 0)
            {
                foreach (var diffId in diffIds)
                {
                    Process p = Process.GetProcessById(diffId);
                    p.Kill();
                }
            }
        }

 

标签:cef,解决办法,Process,List,diffIds,进程,卡顿
From: https://www.cnblogs.com/mengjiulong/p/18583708

相关文章

  • 大量enq: SQ - contention 等待导致系统卡顿
    原文链接:https://blog.csdn.net/xiaofan23z/article/details/141426933Symptoms上午收到邮件报警,提示有异常等待“logfilesync”等待事件邮件监控请参考oracle常用监控脚本(纯干货,没有EMCC,ZABBIX也不怕)_oracle监控及日常处理脚本-CSDN博客  查看OEM也能看到异常的波......
  • 织梦DEDECMS缩略图失真模糊的终极完美解决办法
    设置缩略图大小系统->附件设置,将缩略图默认宽度、高度设为大于等于全站所有调用缩略图的最大尺寸。修改 include/extend.func.php 文件在文件末尾添加以下代码:functionthumb($imgurl,$width,$height,$bg=true){global$cfg_mainsite,$cfg_multi_si......
  • 芝麻清理 拯救C盘空间 告别电脑卡顿 一键解决C盘空间不足 最靠谱的C盘清理软件
    在快节奏的数字化时代,电脑作为我们生活和工作的核心工具,承载着大量的数据和任务。然而,随着使用时间的增长,许多用户都会遇到一个棘手的问题——C盘空间不足。这个看似不起眼的问题,实则隐藏着巨大的危害,它不仅会导致电脑运行缓慢、卡顿频发,甚至可能引发软件运行失败、系统崩溃等......
  • Loadrunner 12.02录制失败,loadrunner no correlation...解决办法
    记录安装Loadrunner12.02后,首次录制失败,提示: 网上查找了:取消自动关联、浏览器设置等,均不生效解决方案:1.确保浏览器可用,啥浏览器都行,只要能用 2.点击recordingoptions 3.General-recording,选择URL-basedscript 4.!!!!HTTPProperties-Supportcharset选择U......
  • 人员背夹佩戴识别智慧矿山一体机斜井人员进出识别:安防设备时间显示错乱原因及具体解决
    在现代矿山行业中,安全和效率是两个核心议题。随着智能化技术的不断进步,智慧矿山的概念逐渐成为现实,特别是在非煤矿山的管理与运营中,智能化手段的应用已经成为提升安全性、效率和经济性的关键。本文将深入探讨人员背夹佩戴识别智慧矿山一体机在配电室无人巡检识别算法中的应用,以及......
  • H5流媒体播放器EasyPlayer.js网页直播/点播播放器创建单个视频播放卡顿的原因
    EasyPlayer.jsH5播放器,是一款能够同时支持HTTP、HTTP-FLV、HLS(m3u8)、WS、WEBRTC、FMP4视频直播与视频点播等多种协议,支持H.264、H.265、AAC、G711A、Mp3等多种音视频编码格式,支持MSE、WASM、WebCodec等多种解码方式,支持Windows、Linux、Android、iOS全平台终端的H5播放器,使用简单......
  • 新版idea编译项目内存溢出解决办法
    1.将idea安装bin目录下的配置文件内存设置调大安装目录bin目录下的.vmoptions文件修改-Xms512m-Xmx16384m-Xss4M-XX:MaxPermSize=16384m这里我电脑16g内存,调到最大了,可以视自己电脑情况调2.将Idea编译器构建进程的共享堆大小调3.将javacompiler的usecompiler修改为......
  • 无插件H5播放器EasyPlayer.js创建多个以上播放实例会卡顿且页面黑屏如何处理?
    随着互联网技术的不断进步,HTML5逐渐取代了传统的HTML4,成为现代网站开发不可或缺的一部分。HTML5不仅简化了标记语言的复杂度,还引入了许多新的API和元素,极大地丰富了网页的表现力。特别是在多媒体领域,HTML5提供了原生支持音频和视频播放的功能,使得开发者无需依赖第三方插件如Flash,......
  • 2024最新付费进群源码搭建+教程(修复卡顿)
    部署环境:Nginx≥1.18 PHP=7.2 MySQL=5.6(必须按照这个环境来,否则无法正常使用)搭建此网站需要3个域名(一个作为后台域名,一个作为中转域名,一个作为分站域名,添加到同一个站点里面)知识点:不需要购买3个域名,同一个域名可以无限解析二级域名(当然3个域名都不一样会更好,避免域名红......
  • 银河麒麟桌面系统——桌面鼠标变成x,窗口无关闭按钮的解决办法
    银河麒麟桌面系统——桌面鼠标变成x,窗口无关闭按钮的解决办法1、支持环境2、详细操作说明步骤1:用root账户登录电脑步骤2:导航到kylin-wm-chooser目录步骤3:编辑default.conf文件步骤4:重启电脑3、结语......