2009-09-03 190 views

回答

36

更好的解决方案,让Windows为您使用Scheduled Tasks

如果它只需要每天执行一次,那么我会去做这件事。即使谷歌做它;)

编辑:

要回答的评论,它是作为Fredrik说。它是一个高级选项,您可以在任务设置时打开该选项,其中包含一个名为“Run only if logged on”的复选框,该复选框在开始时为false。

+0

我推荐!对于我的公司来说,目前这是最好的解决方案。 – Zanoni 2009-09-03 13:11:29

+3

这绝对是要走的路;那么你的应用程序将不会使用任何内存,而只是在等待明天运行。 – 2009-09-03 13:11:57

+0

将C#服务更改为Windows应用程序no forms。 – Zanoni 2009-09-03 13:12:39

4

编写一个控制台应用程序或相当的程序,并使用Windows调度程序(或现在称之为...)来每天运行它。

1

为什么不设置此为计划任务运行。让它执行然后退出。设置Windows以便在每天凌晨3点作为计划任务启动进程。

3

如需灵活的解决方案,您可以使用this。这不是Windows服务,但可以轻松将其合并到一个。或者你可以考虑Quartz.NET这被认为是工业实力(Java版本当然是)。

+0

+1的Quartz.NET参考 - 这将是解决自定义解决方案中调度需求的正确和强大的确实选择(也应该首选的手放在你提到的有限的自定义cron上,使用Quartz非常容易),但是对于手头上使用Task Scheduler的任务,按照接受的答案来看,肯定是一种可行的方法。 – 2009-09-11 14:03:05

2

其他答案都很好。我想我要指出的是,

比较DateTime.Now与凌晨3点

是一个坏的解决方案,即使你的睡眠对每个检查之间的一段时间,因为它浪费了系统资源的不必要的(不仅在反复检查时间,而且在程序的内存使用情况中)。

3

我的计划任务顺利进行备份,但我有一个忠告......

计划任务,如果你注销不执行。我不确定这是否可以过度使用,但是由于Windows自动更新,重新启动并且坐等待我登录,因此我没有被执行任务。

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

另一个考虑因素是3AM是许多用户通常会注销的时间。

+0

这就是我在想什么......我已经尝试了计划任务,并且在服务器重启后没有任何开始......谢谢! – Bigballs 2009-09-03 13:49:23

+0

我必须说,我从来没有自己的问题。总是为我工作100%。 – 2009-09-03 13:52:32

2

如果您每晚都在等待一个文件,而不是担心它到达的时间,那么只需在事件发生时触发一个事件即可。

看:

System.IO.FileSystemWatcher

File System Watcher on MSDN

+0

+1好的一堂,谢谢:) – 2010-02-17 07:53:35

相关问题