0

我想实现一个重复的功能来做一些激活的事情,比如每周一。

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

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

4

3 回答 3

3

在我看来,最好的办法是在控制台应用程序中编写此功能,并使用计划任务(或 SQL 计划程序,或您最喜欢的计划工具)在服务器上创建一个任务,以在您需要的任何时间间隔执行它。

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

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

作为旁注,Windows 窗体应用程序应该在客户端上运行,而不是在服务器上。

于 2012-12-10T16:53:31.113 回答
1

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

这是演示逻辑的伪代码。

if(today is Monday && i didn't do this task yet today)
{
    //do monday stuff
}
于 2012-12-10T16:41:41.680 回答
0

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

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

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

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

于 2012-12-10T16:54:41.457 回答