如何避免计时器打勾中断主线程?

时间:2015-03-12 03:58:51

标签: c# multithreading timer interrupt

我有一个计时器,当它滴答作响时会做某事。我面临的一个问题是,当主线程正在处理某些东西并且计时器滴答时,主线程被计时器tick事件调用的动作打断。

有没有办法进行编程,以便主线程中的进程完成,然后只执行定时器tick事件调用的动作?

谢谢!

1 个答案:

答案 0 :(得分:1)

在UI线程上引发了WinForms Tick的{​​{1}}事件,因此事件处理程序在UI线程上执行。然后,您可以启动在辅助线程上执行的任务,以保持UI线程空闲。但请记住,只要您与用户界面进行互动,例如获取或设置Timer的{​​{1}},您必须在UI线程上执行此操作。

或者,您可以改为使用Text类。默认情况下,它会在辅助线程上引发TextBox事件,因此不需要额外的工作。如果设置System.Timers.Timer属性,那么将在拥有该对象的线程上引发该事件,否则将在线程池线程上引发该事件。