У меня есть консольное приложение с помощью следующей основной программы:Таймер работает только в режиме отладки
static void Main(string[] args)
{
var timer = new System.Threading.Timer(
e =>
{
//some code here
},
null,
TimeSpan.Zero,
TimeSpan.FromMinutes(1));
var backupTimer = new System.Threading.Timer(
e =>
{
//some code here
},
null,
TimeSpan.Zero,
TimeSpan.FromHours(24));
Console.ReadLine();
}
Проблема заключается в том, что в режиме отладки он отлично работает и вызовов методов в обоих таймеров в правильном периоде, и если ввести что-то в консоли заканчивается работа программы (Console.ReadLine() для этого), но когда я запускаю программу в режиме Release, оба таймера вызываются только один раз (первый раз), а затем программа просто ждет, пока я ничего не введу.
Как исправить проблему, поэтому я могу скомпилировать отдельную программу, работающую правильно?
это выглядит как таймеры подавлены с помощью ГХ. – frankie
Вам нужно сохранить ссылку на таймер как поле. В противном случае GC съест его. –
Почему он работает правильно в режиме отладки? – s1ddok