如何安排Windows服务器每个月的第一天运行方法/功能? 我本来是创建了一个小型控制台应用程序,并使用内置在任务调度程序中的窗口安排它,但是在需要部署的环境中,这不是一个选项。
如何使用计时器实现这一点,或者我应该研究一个更好的选择。让服务空闲一整月并不是一个问题就是这个环境。
答案 0 :(得分:0)
Windows有Waitable Timer个对象。您可以设置计时器以在给定日期/时间引发事件。也就是说,您可以在2014年1月3日11:55:37 PM设置计时器。定时器具有64位周期,因此其范围远大于其他定时器(如System.Timers.Timer
和System.Threading.Timer
,限制为40亿毫秒或28天)。
该对象在.NET中没有相应的对象,但我为它编写了一个包装器。我写了一篇关于计时器的文章,但发布它的网站不再在线了。 C#中的Waitable Timer的完整代码可在http://www.mischel.com/pubs/waitabletimer.zip获得。
也就是说,使用预定任务确实是最好的选择。我强烈建议您查看是否可以更改策略以便可以使用它。一个常见的问题是管理员说他们不想用GUI设置任务,不知何故没有意识到有一个命令行程序schtasks.exe,它允许你做GUI所做的一切,以及更多。
答案 1 :(得分:0)
我刚刚创建了一个非常类似的东西,只需创建一个这样的新线程:
const int MillisecondResponseRate = 10000;
public void DoWork()
{
bool executionFlag = true;
do
{
Thread.Sleep(MillisecondResponseRate);
CheckTasks();
} while (executionFlag == true);
}
变量'MillisecondResponseRate'是您希望测试条件的速率,在您的情况下应该是每24小时而不是10000(10秒),就像我的代码一样。
CheckTasks方法应该是测试您希望执行操作的时间的代码,如果它的时间只是执行您需要的操作。
希望它有所帮助!