每天在C#中运行一次

问题描述 投票:16回答:7

是否有任何聪明的方法可以使我的executeEveryDayMethod()每天执行一次,而不必涉及Windows TaskScheduler?

c# scheduling
7个回答
8
投票
看看quartz.net。它是.net的调度库。

更具体地说是here


17
投票
我通过以下操作实现了这一目标...

4
投票
如果运行时间与时间无关,并且可以在每次程序启动时重置,则只需设置一个计时器,这是最简单的方法。如果不能接受,它将开始变得更加复杂,如提出的解决方案here仍然不能解决持久性问题,如果您确实希望执行计划任务将需要单独解决。我真的会再次考虑是否值得复制一个完美的现有功能来解决所有麻烦。

0
投票
您可以查询时间并在某个时间范围内运行,即使机器关闭,您也可以调用该方法或使用Vinko的建议之类的计时器。

但是更好的解决方案(类似于较旧的CRON版本,因此是一种行之有效的模式)是拥有一些持久数据,而我可以想到的最便宜的解决方案是空白文件,检查其最后修改的属性,以及是否在您触摸并运行方法后的24小时内未进行任何修改。这样,您可以确保方法在应用程序离开周末时首先运行。


0
投票
如果计算机重新启动,则可能会有问题,因此您可以将应用程序作为Windows服务运行。

0
投票
要每天在晚上7点至晚上8点之间运行一次作业,我设置了一个间隔= 3600000 ms的计时器,然后只执行以下代码进行计时器滴答。

private void timer1_Tick(object sender, EventArgs e) { //ensure that it is running between 7-8pm daily. if (DateTime.Now.Hour == 19) { RunJob(); } }


0
投票
[如果您只想每天运行一次,而不关心何时运行,那么它将起作用(将在午夜之后运行)。>>

声明DateTime变量:

DateTime _DateLastRun;

© www.soinside.com 2019 - 2024. All rights reserved.