System.Threading.Thread Timer在特定日期运行

时间:2013-11-22 19:24:04

标签: c# multithreading timer

我正在开发一个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);

我不知道如何扩展它以使其工作,以便在每个月的第一天在特定时间触发计时器。

感谢您提供的任何帮助。

3 个答案:

答案 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