【发布时间】:2010-06-29 17:39:27
【问题描述】:
首先,对不起我的英文写作不好。
假设我们有一个带有计时器的获胜表单 (C#)。计时器间隔已设置为 60000 milsec。所以它的滴答事件将每 1 分钟触发一次。假设我们编写了一个名为 Timer1_Tick 的处理滴答事件的方法。如果工作需要超过 1 分钟才能完成怎么办?
【问题讨论】:
-
使用 WinForms 计时器进行如此冗长的阻塞操作并不是一个好主意,因为它基本上会阻塞消息队列和所有相关的东西(尤其是 UI)。
-
您需要每分钟运行一次作业,还是需要将作业执行间隔 1 分钟? IE。开始之间一分钟,或工作之间一分钟?如果是后者,只需在开始执行作业时禁用计时器,然后再启用它,这将重置计时器。无论如何,我希望你意识到每分钟执行一个工作,如果这个工作花费超过 1 分钟,就会产生问题。此外,在普通的非基于线程的计时器中执行 1 分钟的作业不是一个好主意,您应该考虑使用线程(例如 BackgroundWorker。)
-
@Lucero:你有什么建议?
-
对于冗长的操作,使用BackgroundWorker控件。