Timer не запускает событие Elapsed

190
15 августа 2018, 04:50

столкнулся с проблемой, при выполнении метода Start(), не начинает обрабатываться событие Elapsed

class Time
{
    DateTime Event = new DateTime(2018, 09, 01, 0, 0, 0);
    public string TimeBeforeTheEvent;
    System.Timers.Timer timer = new System.Timers.Timer(1000);
    public Time()
    {
        timer.AutoReset = true;
        timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
        timer.Start();
    }
    private void OnTimedEvent(object source, ElapsedEventArgs e)
    {
        TimeSpan RemainingTime = Event - DateTime.Now;
        TimeBeforeTheEvent = RemainingTime.Days + " : " + 
        RemainingTime.Hours + " : " + RemainingTime.Minutes + " : " + 
        RemainingTime.Seconds;
    }
}

Доп. Инфо
Раньше конструктор Time(), был методом, соответственно с другим названием, но результат был тот же
Таймер нужен для создания обратного отчета до события
Вызов из главной формы
Вызов происходит в событии FormLoad

Time NowTime = new Time();

При создании экземпляра класса, вызывался конструктор таймера

Answer 1

Метод Start стартует таймер, который вызывает событие OnTimedEvent тогда, когда ему сказали, то есть через секунду. Потому никуда и не проваливаетесь. Ваш код рабочий, достаточно поставить точку останова внутри события и убедиться, что оно вызовится через секунду после запуска таймера.

READ ALSO
Не работают 2 функции WooCommerce

Не работают 2 функции WooCommerce

Не добавляются категории и теги к товару ( WC_Product )set_category_ids , set_tag_ids failed

264
Многоуровневые объекты и бд

Многоуровневые объекты и бд

ТЗ: написать удобную и правильную с точки зрения ООП структуру для работы с большими многоуровневыми объектами и бд

242
Vue.js в Laravel 5

Vue.js в Laravel 5

Всем известно, что в laravel встроен vuejs

231
Разница дат PHP

Разница дат PHP

Есть текущая дата, есть некоторая дата, которая берется из базыМне нужно найти количество дней между ними, но при попытке сделать это выводит...

209