C#怎样处理form界面卡死问题?

jasonclf 2020-03-31 10:19:55
我在form中创建了个计时器timer,timer时间中调用处理方法Run(),实现定时任务,同时定时任务在执行过程中会刷新状态栏数据,但是每次执行过程中form就是卡死,结果状态栏每次看到都是最后一次的刷新的情况?请问要怎么解决?
...全文
1216 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiangqing 2020-04-02
  • 打赏
  • 举报
回复
用这个System.Timers.Timer
撞墙的蝙蝠 2020-04-02
  • 打赏
  • 举报
回复
线程异步执行
正怒月神 2020-03-31
  • 打赏
  • 举报
回复
System.Windows.Forms.Timer的单线程, 只是体现在,第一个任务没完成,那么轮训的第二个任务就不会触发。 直到第一个任务完成,然后间隔Interval的时间后,才会执行第二个任务。
正怒月神 2020-03-31
  • 打赏
  • 举报
回复
引用 8 楼 手在键盘敲很轻 的回复:
[quote=引用 6 楼 ajdkjalj 的回复:] [quote=引用 5 楼 手在键盘敲很轻 的回复:] 按理说timer也是开新的线程,不会影响UI的,这样,我建议你开个新的线程,然后里面放timer试试
System.Windows.Forms.Timer这个是和主窗体同线程的,所以会卡住,用这个System.Timers.Timer[/quote]受教了[/quote] 不,他只是单线程,但不是主线程。 具体卡顿原因,需要找UI界面更新的代码,或者看读取文件的代码。 要测试timer是不是主线程也很简单, 你设置Interval =1 ,事件是更新textbox1的文本框。 然后你在操作界面上第二个文本框,看看卡不卡就知道了。
similing 2020-03-31
  • 打赏
  • 举报
回复
推荐你用thread 然后sleep一段时间执行如此循环。需要刷新winform就invoke就行了。
  • 打赏
  • 举报
回复
引用 6 楼 ajdkjalj 的回复:
[quote=引用 5 楼 手在键盘敲很轻 的回复:] 按理说timer也是开新的线程,不会影响UI的,这样,我建议你开个新的线程,然后里面放timer试试
System.Windows.Forms.Timer这个是和主窗体同线程的,所以会卡住,用这个System.Timers.Timer[/quote]受教了
  • 打赏
  • 举报
回复
有三种Timer,你用的是哪一种
ajdkjalj 2020-03-31
  • 打赏
  • 举报
回复
引用 5 楼 手在键盘敲很轻 的回复:
按理说timer也是开新的线程,不会影响UI的,这样,我建议你开个新的线程,然后里面放timer试试
System.Windows.Forms.Timer这个是和主窗体同线程的,所以会卡住,用这个System.Timers.Timer
  • 打赏
  • 举报
回复
按理说timer也是开新的线程,不会影响UI的,这样,我建议你开个新的线程,然后里面放timer试试
杀马特丶蛮牛 2020-03-31
  • 打赏
  • 举报
回复
用this.begininvoke
hztltgg 2020-03-31
  • 打赏
  • 举报
回复
这个提供了 backgroundworker 控件来实现你需求的,timer控件和界面同一个线程跑,大任务会卡界面 现在也有 async/await 语法 可以试试
jasonclf 2020-03-31
  • 打赏
  • 举报
回复
引用 1 楼 手在键盘敲很轻 的回复:
最好把Run里面的代码贴一下
Run的代码就是普通函数,读取文件,因为文件比较多耗时长
  • 打赏
  • 举报
回复
最好把Run里面的代码贴一下
趙小雲 2020-03-31
  • 打赏
  • 举报
回复
我之前也是遇到了这个问题,其实这个问题线程是一方面,更重要的是程序片段部分,你说你的是文件处理,我之前也是这样。其实在打开文件,与文件建立连接的时候会造成ui卡顿,一般timer里面不要重复打开关闭文件操作,这样会很费时间。我之前将与一个模拟器建立连接的程序片段放到timer里面,每次连接都会造成ui卡顿,然后我换了线程,发现如果重复连接还是会影响(这可以考虑是cpu的问题)。anyway,最后我把连接的片段弄出来就好了。希望能帮助到你。

110,556

社区成员

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

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

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