2016-11-28 4 views
0

Я новичок в C#, поэтому в настоящее время я работаю с окном, у которого есть таймер, работающий в фоновом режиме, который поступает из базы данных SQLServer.C# Winforms: Уведомление фона для каждого пользователя, когда дата, указанная в базе данных, пришла

Например:

пользователь вошел в систему, а затем проверяет условия оплаты, а затем один клиент появился платить ежемесячный счет. Плата за счет векселя на 1 декабря 2016 года до 31 декабря 2016 года. Затем пользователь обработает его и заплатит следующий платеж за 1 января 2017 года. И когда наступит 1 января 2017 года, появится пузырь уведомления или формы, чтобы уведомить пользователя о том, что клиент должен заплатить этот день.

Пока у меня пока нет кодов, потому что я просто участвую в мозговом штурме и собираю информацию о проекте.

Вопрос в том, как я могу уведомить пользователя в конкретную дату, основанную на указанной дате из базы данных?

Спасибо!

ответ

1

Если пользователь должен быть проинформирован, когда ваше приложение активно, это легко сделать, например, путем опроса. Вы используете таймер, который тикает каждую секунду или sth. вы хотите. В событии 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 Event. Возможно, вам понадобится сделать этот материал асинхронным, потому что он заблокирует ваш пользовательский интерфейс каждые 500 мс.

Это самый простой подход, который я думаю.

Если они должны быть проинформированы без запуска вашего приложения. Вы должны подумать о WindowsService (WCF).