C# winform程序cpu占用率问题

一个雷达显控界面,项目调试运行cpu占用率很高,界面也很卡顿;但是用性能探测器运行,
cpu占用率非常低,很流畅这是怎么回事?
我怀疑是不是线程有异常退出的时候,debug模式要打印错误信息,导致和卡顿?
这个是debug的占用率
这个是debug模式运行的cpu占用率

图片说明
这个是性能探测器运行的cpu占用率,一行代码没改

0

5个回答

你的线程代码怎么写的,有没有用到同步操作,有没有用lock不正确加锁,确保耗时的操作都放在工作线程里了么?

0
antikou1
antikou 需要HACK一下进程树
大约一年之前 回复
sinat_36035248
sinat_36035248 线程不太懂,不正确的lock是怎么样的?
大约一年之前 回复
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 回复sinat_36035248: 不正确的lock会导致主线程挂起,导致程序卡。如果你主线程阻塞在通讯、io上面,那么cpu占用就很低。
大约一年之前 回复
sinat_36035248
sinat_36035248 lock不正确具体指什么?
大约一年之前 回复
sinat_36035248
sinat_36035248 不确定我写的对不对,如果lock写的不对会导致debug和性能探测器的cpu占用率不一样么
大约一年之前 回复

不正确的lock有很多种,造成界面假死的有两个,一个是死锁,一个是同步过度。
这里演示下同步过度:
比如说界面里面写
lock(obj)
{
val = 某个造成阻塞的函数();
更新界面(val);
}
或者
this.invoke(delegate()
{
val = 某个造成阻塞的函数();
更新界面(val);
});
无论哪种写法,都会导致UI阻塞。

0

是不是一些数据运行之后没有及时释放?比如io流和请求响应流等。又或者你启动线程之后是一直处于运行状态没有关闭,设置一下超时响应看一下能不能解决这个问题。运行完的东西要及时释放或者关闭

0

debug监听事件太多了吧,换release编译运行不卡就可以了,debug卡一点没事。

0

是不是有类似
while(1){};的监听死循环? 是的话,在其中加个sleep,CPU使用率就会下来了

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c#Winform程序CPU占用高的原因和解决方法
程序CPU占用高的可能原因:1、存在死循环;为什么死循环会导致CPU占用高呢?      虽然分时操作系统是采用时间片的机制对CPU的时间进行管理的,也就是说到了一定时间它会自动从一个进程切换到下一个进程。但是,当进入别的进程后,若该进程告诉系统它现在不需要做什么,不需要那么多的时间,这个时候,系统就会切换到下一个进程,当切换到死循环所在进程后,由于它一直在循环,永远告诉系统它有事情做(实质仅在死...
C# 多线程造成CPU占用率高解决办法
在C#开发中我们难免会用到多线程操作,而且很多时候需要开启多个线程一直监视某个状态,当线程多的时候就会造成CPU内存占用率过高。电脑配置低的根本吃不消。nnnn private void button1_Click(object sender, EventArgs e)n {n Thread TH1, TH2, TH3, TH4, TH5;n ...
c# 程序一直运行着,CPU占用率高的问题。
请教 c# 程序CPU占用率高的问题。rnrn近日我也在写一个定时采集数据传递到服务器的工具,需要一直运行着,后台用一个线程每隔2秒就判断一次时间,是否到了设定的传输时间,到了点就传送。(System.Threading.Thread.Sleep(1000 * 2))rn现在它不传输的时候,我看了下cpu占用率50% 左右。rn分析原因:rn1. 使用了 while(true)这类的语句程序一直处
C#实时曲线绘图—CPU使用率-利用WinForm
1.新建一个WinForm工程:2.找到工具箱中的数据下面的Chart控件,拖拽到界面上去,在属性里面修改Chart控件Name为cpuChart,修改series属性,ChartType选为Spline.操作过程如下图:3.最后再加个Button按钮,启动曲线绘制。后台代码Form1.cs如下所示:using System;nusing System.Collections.Generic;nu...
c#获取系统和指定进程的CPU和内存占用率
c#控制台示例程序 封装两个类 一个获取系统的CPU和内存占用率 一个获取指定进程的CPU和内存占用率 支持获取多个所有同名进程的信息
C# 获取当前所有进程线程CUP占用率
监控系统所有进程的CPU使用情况 显示CPU占用大于0的进程,定时刷新 可以查看当前系统运行的各进程cpu占用率 在CSDN上找到两个都不太好用,自己写了一个VS2013环境下编译通过 也可以直接运行\bin\Debug目录下的ConsoleApplication1.exe文件 用途:查看自己写的程序那个线程运行时间最多,耗资源等。
C# 监视内存与处理器使用率
使用线程获取信息:nclass MonitorThread n {n public delegate void refresh(string mem, string cpu, string up, string down);n public event refresh refreshEvent;n public ThreadStart ts ;n ...
C# 获取CPU使用率 附源码
下面是源码:using System;nusing System.Diagnostics;nusing System.IO;nnnnnnamespace cpu_get_infon{n    class Programn    {n        static void write_logs(string str)n        {n            //获取和设置当前目录。n      ...
C# fw4.0 获取操作系统CPU使用率和内存使用率(兼容Win32位和64位系统)
代码来自网络,经过本人修改,C++代码保持作者原始写法,自己添加了新方法,调用更方便,这里谢谢曾经的一个C++大神的帮助,没有他的帮忙 ,没有那么快实现需求所要求的功能,fw版本可以更换,网上有工具,希望能帮助到需要的朋友,同时也是对自己成果的记录
c# 获取64位和32位系统内存、cpu和磁盘使用情况
c# 获取64位和32位系统内存、cpu和磁盘使用情况,64位系统和32位系统在获取内存的时候有一点区别,代码里有注释,注意查看
实时显示CPU/内存使用率
winform实现 实时显示CPU/内存的使用率,内存部分不知如何写。
CPU占用率高,用jstack定位代码位置
教你怎么用jstack定位CPU占用率高的代码nn在linux环境下,可以通过top命令查看各个进程的cpu使用情况,默认按cpu使用率排序nnn编写死循环demo,提高CPU占用比例 n写一个简单的死循环demo,使得CPU占用率飙升nnn/**n * @author erbonn * @date 2018/8/16 上午11:25n */npublic class Demo {n pub...
关于程序出现cpu占用过高的问题排查、解决办法以及避免代码中出现cpu占用率过高
程序中出现cpu暂用率过高,一般是跳入死循环导致,当出现cpu暂用率过高,请先检查代码中循环(for、while)是否死循环,如果是线程中开的while循环干一件事,请检查while中是否调用sleep睡眠,如果没有睡眠一定会造成cpu占用率过高,因为不调用sleep,cpu不会切出去;所有线程中的while,请记得加sleep,这样可以避免cpu占用率过高的现象。rn注:sleep(0)表示切出
cpu占用率过高问题排查
背景介绍:项目war包发布到测试环境后,刚开始运行正常,过了一段时间所有查询都报504错误。登陆测试服务器查看日志,发现查询一直在报获取不到数据库连接的错误(数据库连接池用的是druid)。把配置文件下载到本地,本地代码正常运行,应该不是数据源配置的问题。楼主于是用了重启大法,重启后所有请求都正常了。但是接着发现一个很严重的问题,就是项目启动的时候cup占用率就到了100%,接着就开始了cpu占用...
代码运行时 CPU占用率100%的解决方法
为什么运行代码时,CPU占用率用率100%?nCPU占用率100%,怎么办?
C# 获取Cpu使用率,mac地址,磁盘使用率,内存使用率
n       在工作中经常需要在C#中使用本机信息,我将其简单地整理了一下。nn       #region 获取磁盘占用率n        internal static double GetUsedDiskPercent()n        {n            float? usedSize = GetUsedDiskSize();n            float? totalS...
C# 系统操作 实时显示CPU内存使用率
C# 系统操作 实时显示CPU内存使用率 Microsoft.VisualBasic.Devices.Computer myInfo = new Microsoft.VisualBasic.Devices.Computer(); //获取物理内存总量 pbMemorySum.Maximum = Convert.ToInt32(myInfo.Info.TotalPhysicalMemory/1024/1024); pbMemorySum.Value = Convert.ToInt32(myInfo.Info.TotalPhysicalMemory / 1024 / 1024); lblSum.Text = (myInfo.Info.TotalPhysicalMemory / 1024).ToString(); //获取可用物理内存总量 pbMemoryUse.Maximum = Convert.ToInt32(myInfo.Info.TotalPhysicalMemory / 1024 / 1024); pbMemoryUse.Value = Convert.ToInt32(myInfo.Info.AvailablePhysicalMemory / 1024 / 1024); lblMuse.Text = (myInfo.Info.AvailablePhysicalMemory / 1024).ToString(); //获取虚拟内存总量 pbVmemorysum.Maximum = Convert.ToInt32(myInfo.Info.TotalVirtualMemory / 1024 / 1024); pbVmemorysum.Value = Convert.ToInt32(myInfo.Info.TotalVirtualMemory / 1024 / 1024); lblVinfo.Text = (myInfo.Info.TotalVirtualMemory / 1024).ToString(); //获取可用虚拟内存总量 pbVmemoryuse.Maximum = Convert.ToInt32(myInfo.Info.TotalVirtualMemory / 1024 / 1024); pbVmemoryuse.Value = Convert.ToInt32(myInfo.Info.AvailableVirtualMemory/ 1024 / 1024); lblVuse.Text = (myInfo.Info.AvailableVirtualMemory / 1024).ToString();
QT仪表显示程序CPU占用率太高,怎么优化?
最近要用QT仪表显示的程序,在网上下了个别人的程序做参考,但是发现在windows上运行还流畅,CPU占用率20%,但是在开发板上运行CPU占用率太大,达到了90%多,下面附上源码,希望有人能帮着优化一下,使cpu占用率能降低一点。
论常考面试题:线上排查CPU占用100%程序步骤
一、先说windows下,因为一些系统会安装windows server版本,所以也说一下,体验一下排查过程,很简单:nnnn 查消耗cpu最高的进程PIDn n n 根据PID查出消耗cpu最高的线程号n n n 根据线程号查出对应的java线程,进行处理。n nnn 首先要营造出来一个死循环代码nnnn 首先查看PID:nnnn左边红圈点击鼠标右键可以看见PID选项,然后选中查看,之后可以观察...
使用jstack分析java程序cpu占用率过高的问题
n1,使用jps查找出java进程的pid,如3707rn2,使用top -p 3707观察进程情况,然后Shift+h,显示该进程的所有线程。rn3,找出CPU消耗较多的线程id,如3720,将3720转换为16进制0x7d0,注意是小写哦rn4,使用jstack 3707 | grep -A 10 0x7d0 来查询出具体的线程状态。rn rn通过这些线程状态便可基本定位问题之所在。n...
Linux环境下程序的多核CPU占用率高的问题分析和解决
1.项目问题nn前端PDC双目倾斜相机客流统计项目中排查平台服务程序延时大的问题时,平台demo程序测试发现多核cpu中的某个核的占用率达到100%,导致组件中的目标检测线程和客流统计线程的单帧耗时达不到实时,存在延时和丢帧的问题。通过使用strace、pstack进行程序分析,最终找到导致单核占用率很高的原因和解决方法。本文详细描述了该问题的排查过程,并对排查流程做了相关总结。nn2.背景技术及...
获取指定进程的内存和cpu使用率
实时获取指定进程的内存和cpu占用情况,刷新频率为100ms,是为工程写的,为了测试有效抓的msn的内存和cpu信息
如何定位CPU占用过高问题
程序运行后出现CPU占用过高,一般是代码有死循环等。top命令可以查看CPU使用情况,找到问题进程。rnrnrn对CPU使用过高的进程的所有线程进行排序rnps H -e -o pid,tid,pcpu,cmd --sort=pcpu | grep xxxrn得到CPU占用率最高的线程的线程号,比如2907进程的线程2909rnrnrn使用gdbrngdbrngdb>attach 2907rngd
Linux下CPU占用率高分析方法
一、可能有线程一直占用CPU资源nn1. 先通过 ps 查看进程状态,找出进程的PID(8209)。nn2.jstack -l 8209 > /usr/local/work/tomcat/8209.stack 导出PID对应的线程信息到文件nn3.对导出的线程文件下载本地做分析(可以文本打开)nn4. 通过top -H -p 8209 命令查看对应进程是哪个线程占用CPU过高(eg:8308...
C# 解决Winform应用程序占用内存越来越大的方法(亲测ok)
前言:nn.NET 一直所为人诟病的就是“胃口太大”,狂吃内存,虽然微软声称 GC 的功能和智能化都很高,但是内存的回收问题,一直存在困扰,尤其是 winform 程序,其主要原因是因为.NET程序在启动时,是需要由JIT动态编译并加载的,这个加载会把所有需要的资源都加载进来,很多资源是只有启动时才用的。nn以XP 系统为例子,程序启动后,打开任务管理器,会看到占用的内存量比较大,你把程序最小化,...
C#版cpu使用率监控程序
使用C#版进行windows系统cpu使用率监控源码。测试时,与资源管理器的cpu使用率数值稍有不同,但是趋势是一致的。可以多采样几个点,取平均值。
C# 任务管理器及控制台获取CPU占用率前3位进程
为获取CPU占用率,找了很多资料, 大部分都不合用, 找到了人家做的, 但又是图形界面下的, 于是又改造了一个控制台版本, 感觉还不错。
WindowsVC++获取CPU整体使用率
《Windows系统CPU内存网络性能统计第二篇 CPU CPU整体使用率》 http://blog.csdn.net/morewindows/article/details/8678359 配套程序。 讲解了在Windows系统下使用VC++获取系统CPU整体使用率。已经测试,能运行于WinXP和Win7系统。
windbg调试CPU占用过高
一、用任务管理器找到exe文件,生成dump文件n二、用windbg打开dumpn三、输入命令!runaway查看线程的cpu执行时间,找到较高的那个nn四、35号线程就用的比较多,输入~35snn五、kb查看调用堆栈nn...
Qt程序CPU占用率较高的解决办法
Qt程序CPU占用率较高的解决办法n分析思路n总的来说,Qt程序CPU占用率较高的原因可能有以下几点:nn1、在paintEvent中调用update函数,造成无限循环n2、频繁刷新数据n3、复杂的浮点运算n4、死循环n5、paintEvent里操作太多nn我遇到这个问题的程序是利用多个子线程(接收子线程)同时接收并解析网口的数据,同时另外一个子线程(融合子线程)对多个子线程解析得到的数据进行融合...
多线程导致CPU使用率百分百原因
在编写一个控制台应用程序时,在使用多线程以及硬件厂家的dll文件时,认为dll文件里的方法自带一个超时时间,就没有再线程中进行sleep进行休息或其他中断操作,导致程序运行时CPU使用率达到百分之百,在添加上sleep进行休息后,CPU使用率未超过15%。rn可能调用第三方dll方法时,内置的超时时间被CPU进行忽视,认为程序始终在进行死循环操作,导致CPU使用率爆满,这是我个人的想法,有问题请大
java应用cpu使用率过高问题排查
---------------------------------------linux下如何定位代码问题-------------------------------nn1、先通过top命令找到消耗cpu很高的进程id假设是123nn2、执行top -p 123单独监控该进程nn3、在第2步的监控界面输入H,获取当前进程下的所有线程信息nn4、找到消耗cpu特别高的线程编号,假设是123nn5、...
C#获取程序运行内存
获取程序或进程的运行内存大小,与Windows任务管理器一致,注意程序运行时,需要区分是否进程名后的vshost ,CSDN不能自己设置下载积分了,大家见谅
一个cpu占用率高的小问题
早上醒来便被系统报警短信施加了不小的压力,系统夜间多次报警,cpu使用率过高(超过90%),昨天晚上确实是上线了一个计算类的需求,不过算法相对简单(简单来说就是取两个字符串的公共子串,然后做一些处理),主观上认为不会因为这导致cpu爆掉,但是问题就是随着这个需求出现的,肯定拖不了干系,哎,bug排查往往就是这样,感觉某某地方不应该有问题,但是除了他又别无怀疑对象。rnrn火急火燎的赶到公司,先申请
CPU占用率100%解决方法
背景:下午到机房打开显示屏,操作一会儿发现电脑好卡,过了一会儿假死、鼠标有如木偶一样缓慢挪动,调出一个程序,居然半天才弹出显示。我可是一个不将就的人,机智的打开了Windows任务管理器(快捷键Ctrl+shift+esc),打开性能栏发现我的CPU简直是太狂躁了,使用率升到了100%:n。n故障排查:大多数人碰到这种情况都会重启电脑,但是我是一个学计算机的人,怎么能动不动就重启电脑呢。于是开
1.1 让CPU占用率曲线
大致画下来是正弦曲线,但是锯齿状的很厉害,不是很平滑。nnnnnn问题1、CPU的占用率固定在50%,为一条直线。nnnn看到这个问题,脑海思索了半天,却不得要领。印象中程序开的越多,电脑就会越卡,CPU占用率就会上升。但是要在代码里实现的话,那么就是要在这一个程序里完成。CPU就像一堆砖,多个人可以搬完一堆砖,一个人搬多点,也能搬完这堆砖。那么就是让程序在运行的时候,不断的去做事情,去搬砖,消耗...
c++ 计算cpu占用率
计算CPU占用率就是获取系统总的内核时间 用户时间及空闲时间rnrn其中空闲时间就是内核空转 所以内核时间包含空闲时间rnrn然后计算rnrn运行时间 = 内核时间 加 用户时间 减去 空闲时间rnrn间隔时间 =  内核时间 加 用户时间rnrncpu使用率% = 运行时间 / 间隔时间 ;rnrn无论单个进程cpu占用率还是系统整个cpu占用路 都是如此原理rnrn核心代码就是如下几段rnrn
关于创建线程后CPU使用率100%的问题
CPU使用100的问题之一
c++多线程cpu占用率过高解决之道
多线程并发在我们日常的工作中占有相当的需求比例,但是多线程程序很容易造成CPU使用率过高的问题,问题的原因在于我们一般的线程函数是用来处理一些简单的、需要循环处理的事情,例如一般情况下,在线程函数中我们常常使用下面的逻辑代码nnnwhile( is_running )n{n // do workn //......n}nn如果 "do work" 的工作特别简单,或者有的时候我们在do...
通过 GetSystemTimes获取CPU占用率
__int64 CompareFileTime(FILETIME time1, FILETIME time2)n{n __int64 time1= time1.dwHighDateTime << 32 | time1.dwLowDateTime ;n __int64 time2 = time2.dwHighDateTime << 32 | time2.dwLo...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链问题 c#开发微信小程序 教程

相似问题

1
C#中comboBox控件 comboBoxCity.Text获取值与实际选中值不同
1
winform怎么获取datetimepicker控件上的星期?
0
c# winform中如何控制其他电脑上的软件的移动。
3
请问C#如何自适应去调用C++ 32、64位Dll
1
c#点击至flowlayoutpanel内的某个用户控件
1
winform中的chart控件如何去除四周的空白
1
我winform程序 串口读取数据能否通过serialport.readto(正则表达式)来实现。
1
C# 自定义控件实现ChackBox的Checked效果
1
想要一个winform的微信实现支付的功能。
3
c# 怎么把winform应用程序的textbox.text的字符传给网页上的textbox.text中?--本人小白一枚
3
C# 给某个方法(带参)设定执行超时时间
3
c#winform 程序点进下图代码所在界面程序就卡死了怎么办?
1
c# winform zebra GT800
1
winform statusStrip控件 怎样在上下自动滚动条出现时仍一直处于窗口界面下方
1
C#全局钩子链中如何设置最高优先级
2
winform动态绑定自定义样式列表,不使用html,不用new控件的方式
2
winform窗体中DataGrid的显示,怎么让性别显示成文本?数据库用bit保存的
1
vVS2008 winform SQL数据库,无法绑定到没有名称的datatable,可是明明没错啊
1
C#如何让awit之后的代码在指定的线程执行,像winform那样保证awit之后的代码在UI线程执行
1
C# winform中,在Form1中调用cs类中的方法完成数据导出,想在Form1中实现进度显示功能,如何实现。