WPF 简单判断主线程界面是否卡顿的方法
本文来告诉大家如何使用简单的代码判断当前的软件的 UI 线程或界面是否卡顿
在后台线程调用如下代码即可用来判断是否卡顿
private static async Task<bool> CheckDispatcherHangAsync(Dispatcher dispatcher)
{
var taskCompletionSource = new TaskCompletionSource<bool>();
_ = dispatcher.InvokeAsync(() => taskCompletionSource.TrySetResult(true));
await Task.WhenAny(taskCompletionSource.Task, Task.Delay(TimeSpan.FromSeconds(2)));
// 如果任务还没完成,就是界面卡了
return taskCompletionSource.Task.IsCompleted is false;
}
以上代码的 Dispatcher 可以从窗口里面获取,也可以使用 Application.Current.Dispatcher 获取。以上代码推荐在后台线程调用
原理就是给 UI 线程一个任务,如果此任务可以在 2 秒执行完成,那么就证明 UI 不卡,否则就是证明 UI 卡了
以上方法可以放在后台线程的循环进行不断调用,但是多次调用之间需要等待一下,不然将会让 UI 线程太忙
WPF 简单判断主线程界面是否卡顿的方法的更多相关文章
- Android 界面滑动卡顿分析与解决方案(入门)
Android 界面滑动卡顿分析与解决方案(入门) 导致Android界面滑动卡顿主要有两个原因: 1.UI线程(main)有耗时操作 2.视图渲染时间过长,导致卡顿 目前只讲第1点,第二点相对比较复 ...
- Android中为什么主线程不会因为Looper.loop()方法造成阻塞
很多人都对Handler的机制有所了解,如果不是很熟悉的可以看看我 如果看过源码的人都知道,在处理消息的时候使用了Looper.loop()方法,并且在该方法中进入了一个死循环,同时Looper.lo ...
- bootsrtap h5 移动版页面 在苹果手机ios滑动上下拉动滚动卡顿问题解决方法
bootsrtap h5 移动版页面 在苹果手机ios滑动上下拉动滚动卡顿问题解决方法 bootsrtap框架做的h5页面,在android手机下没有卡顿问题,在苹果手机就一直存在这问题,开始毫无头绪 ...
- Android 快速切换到主线程更新UI的几种方法
此最近看了网上,在子线程更新UI的方法,说法很多,但都不是很全面.在此我争取做到总结的全面一些,希望以后对自己,对大家都有一些帮助. 方法一: view.post(Runnable action) 假 ...
- vc中主线程等待子线程退出的方法
VC线程同步,在子线程中等待另一子线程结束,通过WaitForSingleObject可以实现,但是如果在主线程中等待子线程结束,这个函数是无法完成要求的,因为它会造成主线程挂起,导致程序死掉.我们可 ...
- SPA程序加载首界面eclipse卡顿解决笔记
最近在开发SPA程序项目时遇到一个问题,因为是在开发阶段,所以直接就在eclipse中启动项目. 每次进入首界面时,eclipse就会长时间卡顿,前端界面也加载不出来,很影响开发效率. 在查找问题的时 ...
- Win 10卡顿怎么办?解决win10卡顿的方法大汇总
最近微软开始向Windows 10用户推送创造者更新(Creators Update),相信也有很多小伙伴已经尝鲜了这一最新的版本.而对于win10的使用体验,很多小伙伴第一个抱怨的问题便是win10 ...
- Windows系统桌面右击反应变慢、卡顿问题解决方法
博主的电脑是Win10系统,在修改完系统的用户文件夹名后,桌面右击出现了反应卡顿的现象,并且点击输入法,也变得卡顿.问题解决后,于是想简单记录一下. 还是注册表的问题,使用Win+R快捷键,打开运行, ...
- android切换卡顿解决方法
如果想要让应用用户流畅的滑动体验的话,那么就必须对activity和fragment的生命周期有一个完整的概念以及在何种情况下会触发哪些事件. 在自己目前做的项目中,就遇到了这样的问题,那么就把自己的 ...
- python学习笔记 | PyCharm出现卡顿解决方法
问题:使用pycharm时常出现 the IDE is running low on memory 的问题 表示pycharm这款IDE使用内存不足 需要在系统内存充足的情况下扩充IDE memory ...
随机推荐
- 记录--uni-app实现蓝牙打印小票
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 说明 基于uni-app开发,调用官方蓝牙相关api实现连接蓝牙与向蓝牙热敏打印机发送字节流,可打印文字,二维码,图片,调整字体大小等,本 ...
- Dll堆栈问题(Dll的静态变量与全局变量、vs的MT与MD)
问题引入:dll有一个导出函数,函数参数是string&,string在函数内部被=赋值.在exe动态加载此dll,调用此导出函数后,会崩溃. 原因:如果任何STL类的实现中使用了静态变量(我 ...
- KingbaseES V8R3集群运维案例---进程内核参数配置集群启动故障
案例说明: KingbaseES V8R3集群在部署时需要配置与进程间通讯(IPC)相关的内核参数,如果缺失配置或配置错误,kingbasecluster服务在启动过程中将因为内核参数配置错误导致启动 ...
- KingbaseES数据库运维案例之---permission denied to create "sys_catalog.xxx"
KingbaseES数据库运维案例之---permission denied to create "sys_catalog.bdsj_bdgl_test" 案例说明: 在Kin ...
- Java实现软件设计模式---抽象工厂模式(性别产品等级结构肤色产品族)
一.题目要求 二.画出对应的类图 三.文件目录结构 四.具体实现代码 Black.java 1 package com.a004; 2 3 public class Black implements ...
- Windows11右键菜单设置成Win10旧版模式
Windows按键+X,打开终端(cmd),复制命令 reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c ...
- #树上启发式合并,位运算#CF570D Tree Requests
题目 给定一个以 \(1\) 为根的 \(n\) 个结点的树,每个点上有一个字母\((a-z)\),每个点的深度定义为该节点到 \(1\) 号结点路径上的点数. 每次询问 \(a, b\) 查询以 \ ...
- #李超线段树 or 斜率优化+CDQ分治#洛谷 4655 [CEOI2017]Building Bridges
题目 分析 列出方程即为\(dp[i]=\min\{dp[j]+(h[i]-h[j])^2+s[i-1]-s[j]\}\) \(dp[j]+h[j]^2-s[j]=2*h[i]*h[j]+dp[i]- ...
- Mac 使用 Nginx 在本地部署静态网站
安装 安装 Brew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/i ...
- centos环境minio安装踩坑指南2023年7月30日
MinIO的安装踩坑指南 环境centos7 1. 安装MinIO官方文档 Binary下载 , 按照官网的路径配置比较快 下载minio wget https://dl.min.io/server/ ...