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.??

为什么?

system.timer.timer没有';t开始

通过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
    }