, который является правильным подходом к использованию System.Timers.Timer? Я имею в виду ... Я создаю таймер, задаю интервал и метод, который будет вызываться в событии Истекшее.Жизненный цикл System.Timers.Timer
double ms = 1000;
var t = new System.Timers.Timer(ms);
t.AutoReset = false;
t.Elapsed += (sender, e) => { runTask(); };
t.Start();
Что дальше? Должен ли вызов выходить на Таймер? Я полагаю, я не могу, или событие Elapsed никогда не произойдет. Должен ли я регистрировать таймер в какой-либо глобальной переменной, чтобы избежать потери ссылок на него, и поэтому GC мог бы распоряжаться таймером до вызова Elapsed? И если да, то как я могу распоряжаться таймером после обработки события Elapsed (таким образом моя задача была выполнена)?
Это может создать проблему, если Таймер был создан в Форме A, и пользователь выходит из приложения (будет вызывать исключение, если задача пытается получить доступ к элементу управления формой, это случилось со мной однажды). –
@Mohib Sheth: на что я ответил, как защитить таймер от размещения. Чтобы остановить его, вам явно нужно будет вызвать Stop(). Также лучше, если вы можете отказаться от подписки на свой обработчик событий, когда это требуется. Алексис объяснил это .... –
Прокомментированный вами кодовый комментарий больше не присутствует в документации по таймеру. –