如何在一周内提到的日子里运行我的窗口服务

时间:2011-07-30 08:55:39

标签: c# asp.net-mvc windows-services

如何才能使我的窗口服务仅在上述日期运行

例如:我的窗口服务必须运行星期一 - 星期五,剩余的星期六和星期日动态服务应该停止

任何人都可以帮我这一部分,怎么做...>>>

6 个答案:

答案 0 :(得分:4)

答案 1 :(得分:1)

我在生产中使用Quartz.Net,我对易用性和可靠性感到满意。您基本上可以让您的服务连续运行,但会根据您喜欢的时间表调用服务中的特定任务。

答案 2 :(得分:1)

如果您真的想在Windows服务中完成此操作,则应设置一个带有回调的System.Threading.Timer对象,以确认您的时间范围。

可以将计时器设置为每24小时(86,400秒)运行一次

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
    }
}

答案 3 :(得分:0)

很抱歉,如果我不能正确理解您的问题,但我假设您要在Windows中运行预定程序。如果是这种情况,我会选择Windows任务计划程序。它可以在控制面板中找到。

答案 4 :(得分:0)

将逻辑移动到一个简单的应用程序中,并使用Windows计划任务调用它。

答案 5 :(得分:0)

@pravz为什么你一直在询问背后的代码?这是一个ASP.NET应用程序吗?如果是这样,我认为你应该用这些信息重新写下你的问题并重新发布。到目前为止,这听起来并不像你实际上在运行服务。如果您希望以这种方式运行服务,最好的办法是将其写入代码中,如前所述。如果它只是一个控制台应用程序,我会把它扔进计划任务。