后台人员半夜查?我正在尝试为WinForm创建一个后台工作程序,只要在午夜发生滚动,它就会触发代码。我知道该怎么做,但我很确定这不是最好的方法。while(1==1){//ifDatetime.Now==midnight,executecode//sleep(1second)}使用System.Timers.Timer并且仅在应用程序启动时计算DateTime.Now和DateTime.Today.AddDays(0)和...之间的不同。然后设置该数量的间隔。我最近做了这样的事情:publicstaticclassDayChangedNotifier{privatestaticTimertimer;静态DayChangedNotifier(){timer=newTimer(GetSleepTime());timer.Elapsed+=(o,e)=>{OnDayChanged(DateTime.Now.DayOfWeek);timer.Interval=this.GetSleepTime();};定时器。开始();SystemEvents.TimeChanged+=newEventHandler(SystemEvents_TimeChanged);}privatestaticvoidSystemEvents_TimeChanged(objectsender,EventArgse){timer.Interval=GetSleepTime();}privatestaticdoubleGetSleepTime(){varmidnightTonight=DateTime.Today.AddDays(1);vardifferenceInMilliseconds=(midnightTonight-DateTime.Now).TotalMilliseconds;返回差分毫秒数;}privatestaticvoidOnDayChanged(DayOfWeekday){varhandler=DayChanged;如果(处理程序!=null){处理程序(null,新的DayChangedEventArgs(天));}}公共静态事件EventHandlerDayChanged;}和:publicclassDayChangedEventArgs:EventArgs{publicDayChangedEventArgs(DayOfWeekday){this.DayOfWeek=天;}公共DayOfWeekDayOfWeek{得到;私有集;DayChangedNotified.DayChanged+=....:DayChangedNotified.DayChanged+=....相反,您可以使用计时器并将计时器滴答间隔设置为现在()和午夜之间的时间,您可以使用Quartz进行安排。也许在这种情况下它就像一门杀死蚊子的大炮,但它是我所知道的唯一运行良好的调度作业框架。不要使用民意调查。相反,设置一个计时器任务,将其设置为在午夜触发,并添加一个事件来处理它。TimeSpantimeBetween=DateTime.Today.AddDays(1)-DateTime.Now;System.Timers.Timert=newSystem.Timers.Timer();t.Elapsed+=newSystem.Timers.ElapsedEventHandler(t_Elapsed);t.Interval=1000*timeBetween.Seconds;t.开始();我不清楚为什么几年前微软通过添加Windows服务来处理时序来解决此类问题时投票的解决方案被否决了。只需创建计划任务即可运行exe。没有额外的开销。我对为什么需要WinForm有点困惑,它会在午夜运行吗?如果您只需要运行某个排序进程,请使用Windows调度程序在午夜运行它。(在XP上,但我相信Win服务器应该类似)控制面板->计划任务->添加计划任务->填写向导。为您节省大量编码。C#学习教程到此结束:后台工作人员半夜检查?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
