對於工作中的一個側面項目,我試圖讓一段代碼在特定時間每24小時運行一次。我的老闆讓我用一個無限循環代替C#的timer類,這是我正在處理的主要約束。我的問題是,代碼將在第一個24小時內運行(即它將在我設置的那一天運行代碼),但之後它不會更新。我沒有被拋出任何異常或錯誤,所以我認爲這只是我的邏輯問題。設置代碼以每24小時運行
這是我現在的代碼的要點。
int i = 0;
while (true)
{
DateTime currentdate = DateTime.Now;
String time = currentdate.ToString("HH:mm");
if ((time == "23:50" || time == "23:51") && i == 0)
{
HistoricalAverageCollection HAC = new HistoricalAverageCollection();
HAC.ExecHAC();
HistoricalAverageError HAE = new HistoricalAverageError();
HAE.ExecHAE();
FourWeekAverageCollection FWAC = new FourWeekAverageCollection();
FWAC.ExecFWAC();
FourWeekAverageError FWAE = new FourWeekAverageError();
FWAE.ExecFWAE();
DomainsReturningZeroTwentyFourHours DRZ =
new DomainsReturningZeroTwentyFourHours();
DRZ.ExecDomainsReturningZero();
context.SaveChanges();
//Program should update every 24 horus
i = 1;
Console.Write("Updated The Historical Averages In The Data Base at...");
Console.Write(DateTime.Now);
Console.WriteLine("i is -> {0}", i);
Console.Read();
}
else if (time == "06:00" && i == 1)
{
ReportEmail Report = new ReportEmail();
Report.CreateAndSendReport();
i = 0;
Console.Write("counter reset. I is now -> {0} /n Email Sent",i);
Console.Read();
}
}
代碼設置晚上11:50打電話給一堆TSQL存儲過程,然後在早上6點發送基於該數據的電子郵件報告。但是,它只會運行一次,我發現自己在一兩天後的早晨醒來,看到沒有電子郵件正在發送。
任何幫助,將不勝感激:)
你不使用計劃任務此的原因嗎? – jAC
是否有你的老闆不想使用Windows任務計劃程序的原因?這是它所做的確切的事情。 – Amy
是否可以使用Windows任務調度程序每24小時運行一次exe? Windows任務計劃程序有很多自定義選項,可以讓它每x次運行一次並重復該過程。 – WBuck