每周运行一次的Windows服务

3
如何使Windows服务在每周一的凌晨12:00运行?
请指导我。
我尝试了以下方法..
 protected void InitializeTimer()
    {            
        if (timer1 == null)
        {
            timer1 = new Timer();
            timer1.AutoReset = true;
            var todayInWeek = DateTime.Now.Date.DayOfWeek;
            DateTime _scheduleTime = DateTime.Parse(System.Configuration.ConfigurationManager.AppSettings["ScheduledTime"]);
            if (todayInWeek == DayOfWeek.Monday)
            {
                timer1.Elapsed += new ElapsedEventHandler(schedular());
            }

        }           
    }

    private void schedular(object sender, ElapsedEventArgs e)
    {
        try
        {

        }
        catch (Exception ex)
        {

        }
    }

1
你可以使用任务计划程序。当间隔较小(例如几分钟)时,Windows服务通常很有帮助。 - Nisarg Shah
谢谢您的回复,我会查看任务计划程序...您能为我提供一些好的参考资料吗?...任务计划程序。 - DotNetLover
也许这个链接可以帮到你。 https://dev59.com/mmAg5IYBdhLWcg3wI4LD - kritikaTalwar
任务计划程序与您的VB.NET应用程序无关。您只需像创建其他控制台应用程序一样创建即可。任务计划程序是Windows实用程序,您可以在Windows中调用它并创建一个任务来调用您的应用程序。 - jmcilhinney
根据我的想法,Windows服务是一种可以调用一次并且应该始终运行的东西。为此,我们编写了永不结束的循环代码,并设置了特定条件。例如,在您的情况下,您可以过滤掉只有在星期一凌晨12点才能开始进一步处理的内容。while(true){ if(DateTime.Now.ToString("MMM") == "Monday" && DateTime.Now.ToString("HH:mm:ss tt") == "12:00:00 AM") { // 进一步处理 } } - Mohd Ismail Siddiqui
2个回答

0
正如评论中所说,创建一个简单的控制台应用程序,然后安排任务。
要启动“任务计划程序”,只需在Windows搜索栏中键入“任务计划程序”或“Taskschd.msc”。
然后在右侧选择“创建任务”。将其指向您的控制台应用程序,然后创建一个新的触发器,使其每个星期一的12.00运行,就像这样:

enter image description here

如需更多有关在任务计划程序中创建任务的信息,请参阅相关文档。

https://technet.microsoft.com/en-us/library/cc748993%28v=ws.11%29.aspx?f=255&MSPPError=-2147217396


0
你可以考虑使用Topshelf和Quartz.net进行调度 - 你可以创建一个控制台应用程序,将其安装为Windows服务,然后配置它每24小时运行一次。如果你需要更改调度,它会非常灵活 - 我发现通过Windows GUI调度任务有点笨拙。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接