实现重复功能的方法?

时间:2012-12-10 16:39:06

标签: c#

我想实施一个周期性的功能来做一些激活的事情,比如每个星期一。

在服务器中连续运行的Window Forms应用程序中以编程方式执行此操作的方法是什么?

我对延迟很熟悉,但我没有实施延迟一周或一个月的延迟。

3 个答案:

答案 0 :(得分:3)

在我看来,最好的办法是在Console应用程序中编写此功能,并使用Scheduled Tasks(或SQL Scheduler,或您最喜欢的Scheduling工具)在服务器上创建任务,以便在您需要的任何时间间隔执行它。

我不希望应用程序在特定时间执行的代码中有“隐藏”任务。没有通知就有太多机会失败。

使用计划工具,您无需触摸源代码即可查看/更改计划。

作为附注,Windows Forms应用程序应在客户端上运行,而不是在服务器上运行。

答案 1 :(得分:1)

如果您的应用程序已经在运行,我会做的是定期执行任务,检查您是否要执行每周任务

这是用来演示逻辑的psudocode。

if(today is Monday && i didn't do this task yet today)
{
    //do monday stuff
}

答案 2 :(得分:0)

理想情况下,您应该在Windows计划任务下执行此操作。然后它将处理重复发生和时间安排。

如果您需要通过winforms应用程序执行此操作,则有两个选项 - 定期时间轮询或阻塞等待/休眠。

使用定期时间轮询,您可以设置应用程序必须运行的时间间隔。然后在循环中检查此时间段是否已经过去,并采取措施。您可以在循环中设置所需的准确度。

使用阻塞等待,您将睡眠正在运行的线程,直到执行为止。此方法的唯一问题是,如果服务器重新启动,应用程序重新获得其状态并恢复任何睡眠操作。这种方法的准确性应该在几秒钟内(取决于服务器的时间漂移​​)。

相关问题