В приведенном ниже коде показан таймер, который отметит каждые 100 * 1000 (миллисекунды), чтобы отобразить всплывающее сообщение для регистрации. Нижеприведенный код работает, но, к сожалению, мое приложение зависает через некоторое время.System.Timers.Timer зависает приложение Windows Forms в C#
Я искал в google и stackoverflow для этого ответа. Но я не смог найти правильный ответ, чтобы заставить мое приложение работать, не повесившись.
private System.Timers.Timer register_Timer = new System.Timers.Timer();
register_Timer.Interval = (100 * 1000);
register_Timer.Elapsed += new ElapsedEventHandler(register_Timer_Tick);
register_Timer.SynchronizingObject = this;
register_Timer.AutoReset = true;
register_Timer.Enabled = true;
System.GC.KeepAlive(register_Timer);
private void register_Timer_Tick(object sender, EventArgs e)
{
//Pop up to show register message
}
1) Что GC.KeepAlive ничего не делает, вы видите http://stackoverflow.com/q/18136735/56778. 2) На самом деле нет необходимости делать математику за интервал. 'TimeSpan.FromSeconds (100) .TotalMilliseconds' более ясен. Не большое дело, когда вы просто делаете 100 секунд, но если вы хотите 27 минут или 3 часа и 12 минут, использование 'TimeSpan' намного более понятно. –
Я думаю, что ваше приложение подвешено по другой причине. Этот код работает нормально для меня. Я думаю, что это очень похоже на «System.Windows.Forms.Timer». Если у вас нет кода в другом месте, который может вызвать эту проблему. –
Какой вид вы показываете? –