2013-11-22 39 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服務中使用它來創建一個將在每個月的第一天觸發的事件。