2013-11-22 63 views
0

我正在研究一个C#项目,我试图在每个月的第一天触发一个事件。System.Threading.Thread Timer在特定日期运行

我有下面的代码到目前为止

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); 

我不知道我怎么能扩展,以使其工作,以便将火在每个月的1号计时器在特定的时间。

感谢您提供的任何帮助。

+4

为什么你需要通过C#安排它?有许多调度实用程序,包括Windows调度程序,它可以处理“在XYZ时间每个月的第一天运行这个.exe” – AllenG

+0

它需要在Linux兼容的windows和Mono下,应该提到在后对不起。我不希望有一个单独的可执行文件来完成日程安排 – Boardy

+2

对于像调度可执行文件这样的事情,您可能需要采取措施并创建特定于操作系统的解决方案。向操作系统的调度器添加一些东西是5分钟。工作。 –

回答

1

定时器不是长时间设计的,您需要使用外部工具(操作系统特定的并且通常集成到操作系统中),以便能够在预定日期启动您的过程。

大多数操作系统的API都可以嵌入到代码中,这样可以让您以编程方式创建这些任务。 Here is a managed wrapper,它可让您通过代码创建和管理窗口计划任务。您需要自己研究如何通过代码在Linux上创建类似的计划任务。

1

尝试采取看看Quartz .Net。它是Quartz for Java的.Net端口。我以前用它来安排。您可以在Windows服务中使用它来创建一个将在每个月的第一天触发的事件。