hhhljlishen
2018-04-28 15:38
采纳率: 65.2%
浏览 2.3k

C# winform程序cpu占用率问题

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

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

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • threenewbee 2018-04-28 15:46
    已采纳

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

    打赏 评论
  • threenewbee 2018-04-28 15:53

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

    打赏 评论
  • 南方音阁 2018-04-30 08:11

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

    打赏 评论
  • 星兵山 2018-05-01 08:57

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

    打赏 评论
  • Cryking 2018-05-07 01:57

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

    打赏 评论

相关推荐 更多相似问题