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

问题描述 投票:0回答:6

我需要每天凌晨 3 点启动一次在服务器上运行的 C# 服务。我认为我可以使用

thread.sleep()
或通过在 24/7 运行的代码中将
DateTime.Now
与凌晨 3 点进行比较来做到这一点。

您有更好的解决方案吗?

c# service scheduling
6个回答
4
投票

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


3
投票

我已成功使用计划任务进行备份,但我有一句警告......

如果您注销,计划的任务可能无法执行。我不确定这是否可以被覆盖,但我被未执行的任务所困扰,因为 Windows 会自动更新、重新启动并等待我登录。

我禁用了自动更新 - Windows 应首先询问。

另一个考虑因素是,凌晨 3 点通常是许多用户注销的时间。


2
投票

如果您每天晚上都期待一个文件,那么不必担心它何时到达,只需在文件到达时触发一个事件即可。

看:

System.IO.FileSystemWatcher

MSDN 上的文件系统观察器


2
投票

将 DateTime.Now 与凌晨 3 点进行比较

这是一个糟糕的解决方案,即使你在每次检查之间休眠一段时间,因为它不必要地浪费系统资源(不仅在重复检查时间,而且在程序的内存使用方面)。


1
投票

System.Threading.Timer
可能适合你。

记录在这里


1
投票

为什么不将其设置为计划任务运行?让它执行然后退出。将 Windows 设置为每天凌晨 3:00 作为计划任务启动该进程。

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