如何构建一个定期执行某些代码的计时器?

时间:2014-08-05 09:16:50

标签: c#

我有一个应用程序,用户可以安排一些任务。任务可以是“发送电子邮件”,“执行应用程序”等。这些任务中的每一个都有一个开始时间,这会有所不同。其中一些任务应该从任务的开始时间运行到下一个任务的统计时间。

我的问题是如何构建一个允许这种情况发生的计时器。通常我会使用背景工作者和无限循环来做 - 然后每秒检查时间和时间表。这种方法的问题是,当我关闭我的应用程序时,后台工作程序没有关闭。

有关此计时器的更好模式或解决线程问题的任何想法?

1 个答案:

答案 0 :(得分:0)

您可以使用BackgroundWorker方法,但必须正确处理应用程序终止。 在BackgroundWorker中,您可能有类似的内容:

while (true)
{
    ...
}

尝试更改

while (!myBackgroundWorker.CancellationPending)
{
    ...
}

并添加类似

的内容
myBackgroundWorker.CancelAsync();

当用户退出您的应用程序时。