C#:获取窗口服务的下一次执行时间

Posted

技术标签:

【中文标题】C#:获取窗口服务的下一次执行时间【英文标题】:C#: get next execution time of window service 【发布时间】:2013-01-19 21:34:22 【问题描述】:

我正在开发一个窗口服务,我必须安排它。时间表设置为一周中的任何三天和一天四次。在任何时候启动服务,它都必须选择下一个执行时间。

下一次执行时间可以是同一天,也可以是下一个预定的日期(可能有一两天的差距)。

【问题讨论】:

看到你尝试过的东西总是很高兴。 为什么要手动启动? Windows 服务是在后台连续运行的东西,并在时机成熟时执行它应该做的事情。作为替代方案,您可以使用还可以微调的计划任务。 我必须第一次启动它。在我启动它的任何时候,它必须选择下一个执行时间。 那么,您能否包含一个执行计划模式? 请不要在 cmets 中提供其他信息。编辑您的问题并将其添加到那里,以便人们在阅读您的问题时可以看到它,而无需费力地通过 cmets 找到它。如果所有信息都在问题本身中,它会提高您获得答案的机会。谢谢。 【参考方案1】:

看看Task Scheduler Managed Library (Codeplex)。我相信它是由微软自己维护的。

将 DLL 引用添加到 Microsoft.Win32.TaskScheduler 后,您可以像这样轻松地使用它:

var taskService = new TaskService();
var task = taskService.NewTask();

task.Triggers.Add(new WeeklyTrigger(DaysOfTheWeek.Friday, 1));
task.Actions.Add(new ExecAction("YourProgram.exe", null, null));

task.RootFolder.RegisterTaskDefinition("YourTaskName", task);

这将注册一个每周五运行的任务,执行YourProgram.exe

【讨论】:

以上是关于C#:获取窗口服务的下一次执行时间的主要内容,如果未能解决你的问题,请参考以下文章

如何等待http请求在处理到angular 7中的下一步之前获得响应[重复]

获取循环中的下一项

使用setTimeout跳转到(Typescript).forEach循环中的下一次迭代

c# windows form,部署前的下一步是啥?

如何暂停 Oracle Job 的下一次运行?

Quartz.Net线程处理用到的两个Attribute