gpt4 book ai didi

c# - System.Windows.Forms.Timer 未在 Foreach block 内触发 Tick 事件

转载 作者:太空宇宙 更新时间:2023-11-03 20:07:33 26 4
gpt4 key购买 nike

我有一个与我的主窗体关联的 System.Windows.Forms.Timer。我需要这个计时器每 1000 毫秒触发一次,以便可以执行一些工作。 Form.Shown 事件中的 Timer.Enabled 属性设置为 true,间隔设置为 1000。

Timer.Tick 事件在大多数情况下每秒都会触发一次。但是,当我的应用程序正在执行 foreach 语句时,Tick 事件停止触发。我试过 Thread.Sleep 但没有帮助。有没有人有什么建议?处理我的 Timer.Tick 事件的代码包含异常处理,并且我已验证该事件在执行 foreach block 期间停止在调试器中触发。此外,我的应用程序此时不是多线程的。有什么建议吗?

最佳答案

如果您让 UI 线程在一个循环中保持忙碌,那么不,定时器 Tick 处理程序将无法执行。如果您有一个长时间运行的循环,请将其推送到后台线程。 sleep 无济于事,因为这也会阻塞 UI 线程。还有其他计时器不会在 UI 线程 (System.Timer) 上触发,但如果您的 tick 需要访问 UI,那么如果 UI 线程仍然很忙,那实际上对您没有帮助。

关于c# - System.Windows.Forms.Timer 未在 Foreach block 内触发 Tick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22100634/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com