2011-05-04 83 views
-1

一旦報告了incdient,我需要向用戶發送郵件。應在事件報告時間後發送郵件30分鐘,事件發生後105分鐘再發送郵件,然後在事件報告時間後225分鐘發送。Windows服務邏輯

我正在使用窗口服務和C#,但我只需要一個條件爲serivce執行代碼。

這是我的代碼。

protected override void OnStart(string[] args) 
{ 
    timer1 = new Timer(1800000); 
    timer1.Enabled = true; 
    timer1.Elapsed += new ElapsedEventHandler(Timer1_Event); 
} 


public void Timer1_Event(object source, ElapsedEventArgs e) 
{ 
    if(datetime.now==incidentreportedtime+30mim) 
    { 
    //Send mail to user 
    } 
} 

我的問題是事件可以隨時提出,到時候可能沒有eaual在該服務執行代碼的時間。

例如,事件提出時間是下午12點45分,郵件將在下午1點15分發送。該服務可能於下午12時50分開始,並於下午1點20分再次開始,這不等於下午1點15分。與下午1點20分同時發生的事件很少,但並非所有事件都可以被視爲發送郵件。

幫幫我。

+2

什麼是你的問題?它看起來像是某人爲你寫一個Windows服務的請求。 – 2011-05-04 06:02:11

+0

我沒有得到你所問的。你應該問我關於我在那裏發佈的問題。請幫助我用你的邏輯來完成這項任務。我不需要代碼。 – chaitanya 2011-05-04 06:27:57

+1

我想提交一個事件。 – 2011-05-04 06:28:12

回答

1
public void Timer1_Event(object source, ElapsedEventArgs e) 
{ 
    if(DateTime.Now.Substract(incidentreportedtime).TotalMinutes == 30) 
    { 
    //Send mail to user 
    } 
} 

,並確保定時運行一次每分鐘..

發送郵件谷歌像.NET一些事情發送郵件我的第一擊:http://weblogs.asp.net/scottgu/archive/2005/12/10/432854.aspx

+1

'DateTime.Now.Substract(incidentreportedtime).TotalMinutes'有點更清晰imho。否則+1。只是我輸入的答案,當我得到可怕的「一個新的答案已發佈,按這裏重新加載」 – jgauffin 2011-05-04 07:40:21

+0

謝謝,但它的restircted(在我的情況,而不是編程)每分鐘運行服務。有沒有可能做到這一點與每分鐘運行服務 – chaitanya 2011-05-04 07:47:33

+0

如果你記錄當你發送一個郵件最後爲每個事件,你可以計算多久以前它是最後一次... – Peter 2011-05-04 07:54:14