system.timer.timer没有';t开始
本文关键字:timer 开始 没有 system | 更新日期: 2023-09-27 18:19:56
我有我的计时器
System.Timers.Timer progress = new System.Timers.Timer(250);
progress.SynchronizingObject = this;
progress.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
progress.AutoReset = false;
它被禁用了,然后在某些功能中我尝试:
if(!flag)
progress.enabled = true; //it doesn't change to true.??
为什么?
通过msdn读取一位后,我发现这一行:
如果在调用Start方法时已启用Timer,则会重置间隔。如果AutoReset为false,则必须调用Start方法才能再次启动计数。
这告诉我,你可以用timer.start()手动重新启动你的定时器;
当我进一步研究时,我发现了一个例子,它表明你需要保护你的垃圾收集计时器:
// If the timer is declared in a long-running method, use
// KeepAlive to prevent garbage collection from occurring
// before the method ends.
//GC.KeepAlive(yourTimer);
我希望你能在这个上做得更好
您可以使用启动计时器
progress.Start();
whitch将Enabled设置为true(请参阅文档:http://msdn.microsoft.com/de-de/library/system.timers.timer.start.aspx)
Enabled
MSDN中写道:"Ruft einen Wert ab,der angibt,ob Timer das Elapsed Ereignis auslösen soll,or legt diesen fest。"
在过去的几年里,这是一个新的开始。Stoppen den Timers a sich。
我的软件中有一个计时器,我喜欢这样做:
private void StartTimer()
{
TimeSpan ts = new TimeSpan(0, 0, 5, 0);
System.Windows.Threading.DispatcherTimer myDispatcherTimer = new System.Windows.Threading.DispatcherTimer();
myDispatcherTimer.Interval = ts;
myDispatcherTimer.Tick += new EventHandler(Each_Tick);
myDispatcherTimer.Start();
}
private void Each_Tick(object o, EventArgs sender)
{
//Your Method here
}