我創建了.net Windows服務,並計劃每5分鐘運行一次。 此Windows服務包含發送電子郵件並在發送電子郵件後更新表的代碼。計時器如何在.net Windows服務中工作?
首先我發送所有的電子郵件,然後更新數據庫中的所有記錄bulk.So我的問題是我設置的間隔爲5分鐘,它是否打破了我的情況,如果它需要5分鐘發送電子名片,然後計時器停止不更新數據庫,或繼續執行,直到它完全執行任務。
_timer = new Timer(5* 60 * 1000);
_timer.Elapsed += new ElapsedEventHandler(OnTimerElapsed);
_timer.AutoReset = true;
_timer.Start();
........................
{//send one email at a time ..this is in loop
Library.SendEmail(edtls);
ds.Tables["EDts"].Rows[i]["Sent"] = 1;
ds.Tables["EDts"].Rows[i]["Status"] = "Sent";
ds.Tables["EDts"].Rows[i].EndEdit();
}..how about timer stop execution here(it sends the emails but doesn't update the table)
ds.Update(EDts, "EmailDts");//updating table here
_Which_'Timer' class? .NET定義了4種不同的方法,並且可能使用不正確的方法 – MickyD
[瞭解C#中Timer控件的工作方式]的可能副本(https://stackoverflow.com/questions/8997838/understanding-working-of-timer-control- in-c-sharp) –
這不是一個控件。 AutoReset = true是相當危險的,並且*即使在前一個滴答未完成時也會導致Elapsed事件處理程序運行。這很少會達到一個好結局。很容易修復,使用false並在事件處理程序結束時設置Enabled = true。在事件處理程序中始終使用try/catch來確保不會吞下異常。 –