我如何安排C#Windows服务每天执行一项任务?

我如何安排C#Windows服务每天执行一项任务?

我有一个用C#(.NET 1.1)编写的服务,并希望它在每晚的午夜执行一些清理操作。我必须保留服务中包含的所有代码,那么最简单的方法是什么?使用Thread.Sleep()和检查滚动的时间?



慕村225694
浏览 1509回答 3
3回答

绝地无双

我实现这一目标的方法是使用计时器。运行服务器计时器,让它每60秒检查一次/小时。如果它是正确的小时/分钟,那么运行您的过程。实际上,我把它抽象为一个我称之为OnceADayRunner的基类。让我清理一下代码,我会在这里发布。    private void OnceADayRunnerTimer_Elapsed(object sender, ElapsedEventArgs e)     {         using (NDC.Push(GetType().Name))         {             try             {                 log.DebugFormat("Checking if it's time to process at: {0}", e.SignalTime);                 log.DebugFormat("IsTestMode: {0}", IsTestMode);                 if ((e.SignalTime.Minute == MinuteToCheck && e.SignalTime.Hour == HourToCheck) || IsTestMode)                 {                     log.InfoFormat("Processing at: Hour = {0} - Minute = {1}", e.SignalTime.Hour, e.SignalTime.Minute);                     OnceADayTimer.Enabled = false;                     OnceADayMethod();                     OnceADayTimer.Enabled = true;                     IsTestMode = false;                 }                 else                 {                     log.DebugFormat("Not correct time at: Hour = {0} - Minute = {1}", e.SignalTime.Hour, e.SignalTime.Minute);                 }             }             catch (Exception ex)             {                 OnceADayTimer.Enabled = true;                 log.Error(ex.ToString());             }             OnceADayTimer.Start();         }     }该方法的优点在于.SignalTime.Minute / Hour检查。那里有用于测试等的钩子,但是这就是你的经过时间计时器看起来像什么才能使它全部工作。
打开App,查看更多内容
随时随地看视频慕课网APP