System.Timers.Timer 在C#中是一个基础的定时器,使用也相当的广泛,有一个很小的技巧在这里记录一下,如何判断我的Timer是否已经Start()过了?

就像下面这样:

System.Timers.Timer timerLoad = new System.Timers.Timer(100);
timerLoad.Elapsed += TimerLoadElapsed;


private void TimerLoadElapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            var timer = sender as System.Timers.Timer;
            timer.Stop();
	//your othe task code...
            timer.Dispose();
        }

public bool IsStarted()
{
	return timer.Enabled;
}

lebang2020.cn

说明

System.Timers.Timer 没有公开的 IsRunning 属性,判断是否已启动可用 Enabled 属性;AutoReset 为 true 时,启动后 Enabled 保持 true。

  • 判断:if (timer.Enabled) 表示已启动(未 Stop)。
  • 启动 / 停止:timer.Start() 等价于 Enabled = true,timer.Stop() 等价于 Enabled = false。
  • 一次性任务可设 AutoReset = false,或改用 System.Threading.Timer。