VS下调试运行时正常,直接运行exe文件时会有卡顿

有时想起 2018-04-11 10:03:07
程序两个线程,一个是timer 实时读取平台位置信息,一个是开的Thread线程 做平台运动等动作。
发现,在VS下调试时 一切都正常。直接打开exe运行程序的话,会有卡顿现象。
找到的原因如下:
在Thread线程里: label1.Invoke(new Action(() => { label1.Text = BZThickSum.ToString("0.000"); }));
加上这句代码就会造成这个现象。直接运行exe时 timer读位置信息的时候就有卡顿了。然后vs打开着F5运行却正常
去掉的话 调试时 和直接运行都不会有卡顿,
这是为什么呢
...全文
1133 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
vin_Lee 2018-04-12
  • 打赏
  • 举报
回复
vs运行前改成Release模式再试试看
李敢敢 2018-04-12
  • 打赏
  • 举报
回复
加个Application.DoEvents();试试
xian_wwq 2018-04-11
  • 打赏
  • 举报
回复
timer会导致重入 如果timer的执行函数在异常情况下运行时间 超过设定的interval未完成,那就会重复触发 建议更换为thread BeginInvoke应该不会导致卡顿, 除非获取数据时有互斥操作,导致等待
  • 打赏
  • 举报
回复
那你定义一下卡顿吧。 还有这个线程刷新的频率是多少,因为一秒1000毫秒,人眼可见30+帧,最快的显示器刷新率144帧你这个刷新率高了也没意思,因为根本不显示的。
有时想起 2018-04-11
  • 打赏
  • 举报
回复
引用 2 楼 xomix 的回复:
Thread设置为background
已经设置了 IsBackground = true 的
  • 打赏
  • 举报
回复
Thread设置为background
有时想起 2018-04-11
  • 打赏
  • 举报
回复
label1.BeginInvoke(new Action(() => { label1.Text = BZThickSum.ToString("0.000"); })); 也试过 也是一样的现象。
stevenjin 2018-04-11
  • 打赏
  • 举报
回复
这可能是定时器造成的了,前一个没执行完,后面的又来
Chasmれ 2018-04-11
  • 打赏
  • 举报
回复
有没有访问数据库

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧