我如何在一周中指定的日期运行窗口服务?
本文关键字:日期 运行 窗口 服务 一周 | 更新日期: 2023-09-27 18:04:14
如何使我的窗口服务只在指定的日子运行
示例:我的窗口服务服务必须在周一至周五运行,剩余的周六和周日动态服务应该停止
>>您应该使用窗口调度程序
参见http://www.sourcedaddy.com/windows-7/scheduling-the-task-scheduler.html如果你想知道
我使用的是Quartz。Net在生产中,我对它的易用性和可靠性感到满意。你基本上可以让你的服务连续运行,但调用特定的任务在服务中配置在您喜欢的时间表。
如果你真的想在Windows服务中完成这个,你应该设置一个System.Threading.Timer
对象,用一个回调来确认你的时间框架。
定时器可设置为每24小时(86400秒)运行一次
protected override void OnStart(string[] args)
{
// this will start a timer when your service starts
// the 3rd argument will run DoStuff(object) immediately and again in 24 hours
timer = new System.Threading.Timer(new System.Threading.TimerCallback(DoStuff), null, 0, 86400 * 1000);
}
然后,在回调DoStuff
检查时间,日期等
public static void DoStuff(object objectState)
{
DateTime now = DateTime.Now;
if(now.DayOfWeek != DayOfWeek.Saturday && now.DayOfWeek != DayOfWeek.Sunday)
{
// do some stuff
}
}
对不起,如果我没有正确理解你的问题,但我假设你想在Windows中运行一个预定的程序。如果是这样的话,我会选择Windows任务调度程序。
将逻辑移动到一个简单的应用程序中,并通过使用windows计划任务来调用它。
@pravz为什么你一直在问背后的代码?这是ASP吗?网络应用程序?如果是这样,我认为你应该用这些信息重写你的问题并重新发布。到目前为止,对我来说,这听起来不像是您实际在运行服务。如果您希望服务以这种方式运行,最好的办法是按照前面建议的那样将其写入代码。如果它只是一个主机应用,我会把它放在计划任务中。