System.Timers.Timer是否足以在更长的时间间隔内调用方法?也就是日常工作和类似的事情。有更好的东西我应该用在那样的事情上吗?
示例:
System.Timers.Timer timer = new System.Timers.Timer();
timer.Elapsed += new System.Timers.ElapsedEventHandler(DoTimedWork);
timer.Interval = 1000 * 60 * 60 * 24; // 24 Hours
timer.Start();谢谢!
发布于 2016-03-10 09:11:21
您的应用程序是如何启动的?使用24小时间隔的System.Timers.Timer是可以的,前提是您可以保证您的进程仍然活着来处理计时器回调--您的进程可能存在内存泄漏或资源泄漏,导致操作系统关闭它,或者它可能托管在一个常规“回收”进程的环境中(例如IIS中的应用程序池)。
一个更好的解决方案是两者兼而有之:在应用程序中启动计时器,但在Windows上有一个cron作业(Windows上的“调度任务”),如果程序尚未运行,则启动它--您可以使用全系统的mutex和其他IPC方法来确保一次只运行一个应用程序实例。
发布于 2016-03-10 09:09:46
只要您的进程在此期间实际处于活动状态(例如,因为它是一个windows服务),那么定时器就可以了。
如果您需要在指定的时间做一些事情,并且不能保证您的进程正在运行,那么使用Windows任务调度程序可能是一个很好的选择。
如果您需要更多的选项,您可能需要查看像石英这样的调度库。
发布于 2016-03-10 09:42:49
我用汉火来做它。有一些令人敬畏的特性,比如火和遗忘任务,延迟任务,反复出现的任务.后台作业保存到持久存储中,如Server、Redis、PostgreSQL、MongoDB等。您可以将其作为控制台应用程序、Windows服务、Azure Worker角色等运行,这也是开源的,完全免费供商业使用
https://stackoverflow.com/questions/35911910
复制相似问题