我有一个计时器,当它滴答作响时会做某事。我面临的一个问题是,当主线程正在处理某些东西并且计时器滴答时,主线程被计时器tick事件调用的动作打断。
有没有办法进行编程,以便主线程中的进程完成,然后只执行定时器tick事件调用的动作?
谢谢!
答案 0 :(得分:1)
在UI线程上引发了WinForms Tick
的{{1}}事件,因此事件处理程序在UI线程上执行。然后,您可以启动在辅助线程上执行的任务,以保持UI线程空闲。但请记住,只要您与用户界面进行互动,例如获取或设置Timer
的{{1}},您必须在UI线程上执行此操作。
或者,您可以改为使用Text
类。默认情况下,它会在辅助线程上引发TextBox
事件,因此不需要额外的工作。如果设置System.Timers.Timer
属性,那么将在拥有该对象的线程上引发该事件,否则将在线程池线程上引发该事件。