【发布时间】:2013-08-09 12:12:14
【问题描述】:
下面的代码显示了一个计时器,它每 100* 1000(毫秒)滴答一次,以显示注册的弹出消息。下面的代码正在运行,但不幸的是我的应用程序在一段时间后挂起。
我已经在 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 没有为您做任何事情 stackoverflow.com/q/18136735/56778。 2)真的没有必要为区间做数学。
TimeSpan.FromSeconds(100).TotalMilliseconds更清楚。当你只做 100 秒时没什么大不了的,但如果你想要 27 分钟或 3 小时 12 分钟,使用TimeSpan会更清楚。 -
我认为您的应用程序因其他原因而挂起。这段代码对我来说可以。我认为它非常像
System.Windows.Forms.Timer。除非您在其他地方有可能导致此问题的代码。 -
你展示了什么样的弹出窗口?
-
@KingKing:如果我不使用计时器,应用程序不会被挂起。
-
@JimMischel :我在 timertick 函数中使用了一个消息框。