sinat_36035248
hhhljlishen
采纳率60.9%
2018-04-28 15:38

C# winform程序cpu占用率问题

10
已采纳

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • caozhy 从今以后生命中的每一秒都属于我爱的人 3年前

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

    点赞 评论 复制链接分享
  • edcvf3 Cryking 3年前

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

    点赞 评论 复制链接分享
  • u011587852 星兵山 3年前

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

    点赞 评论 复制链接分享
  • dongshangwen520 南方音阁 3年前

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

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 3年前

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

    点赞 评论 复制链接分享

相关推荐