2016-11-28 19 views
0

我是C#新手,所以當前正在使用一個Windows應用程序,該應用程序在SQLServer數據庫中有一個工作於後臺的計時器。C#Winforms:數據庫中指定日期後,每個用戶的後臺通知

例如:

用戶輸入系統,然後檢查付款方式,然後一個客戶出現支付每月的賬單。在2016年12月1日之前支付帳單,直至2016年12月31日。然後用戶將處理該帳單並計劃2017年1月1日的下一次付款。2017年1月1日到來時會出現通知泡泡或表格來通知用戶客戶必須在這一天付款。

到目前爲止,我還沒有代碼,因爲我只是頭腦風暴和收集項目信息的一部分。

問題是,我如何在基於指定日期的特定日期通知用戶在數據庫中?

謝謝!

回答

1

如果只需要告知用戶,當您的應用程序處於活動狀態時,這可以通過輪詢來輕鬆完成,例如。你使用一個計時器,每秒或每秒滴答滴答。你要。在Timer.Elapsed事件中,您可以輪詢數據庫中的日期並檢查其值。

因此,讓一個類:

public class CheckDbDate 
{ 
    private Timer _timer; 
    public event EventHandler DateReached; 

    public CheckDbDate() 
    { 
     _timer = new Timer(); 
     _timer.Intervall = 500; //ms 
     _timer.Elapsed += (sender, e) => CheckDate(); 
     _timer.Start(); 
    } 

    public void CheckDate() 
    { 
     //Check your Database Date value 
     if (DateTime.Now.CompareTo(dbDate) >= 0) 
     { 
     DateReached?.Invoke(this, new EventArgs()); 
     } 
    } 
} 

因此,在您MainApplication代碼,你必須instatiate一個CheckDbDate對象和認購DateReached事件。你可能需要使這個東西異步,因爲它會每隔500毫秒阻止你的用戶界面。

這是我認爲最簡單的方法。

如果應該在沒有運行應用程序的情況下通知他們。你應該考慮一個WindowsService(WCF)。