如何在C#服务中每天的同一时间执行代码一次

7
我需要在每天凌晨3点在服务器上启动一个C#服务。我认为我可以用thread.sleep()或通过将DateTime.Now与代码中的凌晨3点进行比较来实现,在代码持续运行24/7的情况下。
您有更好的解决方案吗?
6个回答

4
编写一个控制台应用程序或等效的应用,并使用Windows任务计划程序每天运行它。

3
我已经成功地使用计划任务进行备份,但是我有一个警告...
如果您注销登录,计划任务可能无法执行。我不确定是否可以覆盖此问题,但是我曾因为Windows自动更新、重新启动并等待我登录而错过了任务的执行。
另一个需要考虑的因素是凌晨3点是许多用户通常注销登录的时间。

这是我在想的...我尝试了定时任务,但在服务器重启后没有任何启动...谢谢! - Bigballs
我必须说,我自己从未遇到过这个问题。对我来说总是百分之百地工作。 - Kyle Rosendo
我相当确定,即使在2009年(Windows Vista/Server 2008 R2时代),Windows任务计划程序中也有一个选项,可以让任务无论用户是否登录都运行。 - TylerH

2
比较当前时间与凌晨3点。这是一个不好的解决方案,即使在每次检查之间睡一段时间,也会不必要地浪费系统资源(不仅是重复检查时间,还包括程序的内存使用)。

2

如果您每晚都需要等待一个文件,不必担心它何时到达,只需在它到达时触发一个事件。

看看:

System.IO.FileSystemWatcher

MSDN上的文件系统观察器


1

1
为什么不将此设置为定时任务运行呢?让它执行完毕后自动退出。在Windows中,将该进程设置为每天凌晨3点启动的定时任务。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接