我正在开发一个C#项目,我试图在每个月的第一天触发一个事件。
到目前为止我有以下代码
TimeSpan timeSpan = new TimeSpan(19, 17, 00);
DateTime current = DateTime.Now;
TimeSpan timeToGo = timeSpan- current.TimeOfDay;
ScheduledTaskExec scheduledTaskExec = new ScheduledTaskExec();
Timer timer = new Timer(x =>
{
scheduledTaskExec.executeTask();
}, null, timeToGo, TimeSpan.Zero);
我不知道如何扩展它以使其工作,以便在每个月的第一天在特定时间触发计时器。
感谢您提供的任何帮助。
答案 0 :(得分:1)
定时器不是长期设计的,您需要使用外部工具(特定于操作系统并且通常集成到操作系统中),这些工具可以在预定日期启动您的过程。
大多数操作系统都有API,您可以在代码中使用它,这样可以让您以编程方式创建这些任务。 Here is a managed wrapper,可让您通过代码创建和管理Windows计划任务。您需要自己研究如何通过代码在Linux上创建类似的计划任务。
答案 1 :(得分:1)
尝试查看Quartz .Net。它是Quartz for Java的.Net端口。我过去用它来安排。您可以在Windows服务中使用它来创建将在每个月的第一天触发的事件。
答案 2 :(得分:0)
DateTime.Subtract会工作,以获得未来日期和最后一次运行之间的时间跨度吗?
http://msdn.microsoft.com/en-us/library/ae6246z1(v=vs.110).aspx