首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >长时间间隔System.Timers.Timer

长时间间隔System.Timers.Timer
EN

Stack Overflow用户
提问于 2016-03-10 09:07:27
回答 3查看 1.7K关注 0票数 0

System.Timers.Timer是否足以在更长的时间间隔内调用方法?也就是日常工作和类似的事情。有更好的东西我应该用在那样的事情上吗?

示例:

代码语言:javascript
复制
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();

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-10 09:11:21

您的应用程序是如何启动的?使用24小时间隔的System.Timers.Timer是可以的,前提是您可以保证您的进程仍然活着来处理计时器回调--您的进程可能存在内存泄漏或资源泄漏,导致操作系统关闭它,或者它可能托管在一个常规“回收”进程的环境中(例如IIS中的应用程序池)。

一个更好的解决方案是两者兼而有之:在应用程序中启动计时器,但在Windows上有一个cron作业(Windows上的“调度任务”),如果程序尚未运行,则启动它--您可以使用全系统的mutex和其他IPC方法来确保一次只运行一个应用程序实例。

票数 2
EN

Stack Overflow用户

发布于 2016-03-10 09:09:46

只要您的进程在此期间实际处于活动状态(例如,因为它是一个windows服务),那么定时器就可以了。

如果您需要在指定的时间做一些事情,并且不能保证您的进程正在运行,那么使用Windows任务调度程序可能是一个很好的选择。

如果您需要更多的选项,您可能需要查看像石英这样的调度库。

票数 1
EN

Stack Overflow用户

发布于 2016-03-10 09:42:49

我用汉火来做它。有一些令人敬畏的特性,比如火和遗忘任务,延迟任务,反复出现的任务.后台作业保存到持久存储中,如Server、Redis、PostgreSQL、MongoDB等。您可以将其作为控制台应用程序、Windows服务、Azure Worker角色等运行,这也是开源的,完全免费供商业使用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35911910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档