定时器未启动
本文关键字:启动 定时器 | 更新日期: 2023-09-27 18:14:28
所以我想检查当前time
每秒钟,如果seconds == 0
引发event
并显示当前时间:
using System.Timers;
public delegate void TimeHandler(object sender, TimeEventArgs e);
public class Clock
{
private Timer timer;
public event TimeHandler CurrentTime;
public Clock()
{
timer = new Timer();
timer.Elapsed += timer_Elapsed;
timer.Interval = 1000;
}
public void Start()
{
timer.Enabled = true;
timer.Start();
}
private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
DateTime time = DateTime.Now;
int sec = time.Second;
if (sec == 0)
if (CurrentTime != null)
CurrentTime(this, new TimeEventArgs(time));
}
}
public class TimeEventArgs
{
public readonly DateTime Time;
public TimeEventArgs(DateTime time)
{
Time = time;
}
}
用法:
Clock clock = new Clock();
clock.CurrentTime += Clock_CurrentTime;
clock.Start();
private static void Clock_CurrentTime(object sender, TimeEventArgs e)
{
Console.WriteLine(e.Time.ToShortTimeString());
}
但是好像计时器没有开始。
您的timer_Elapsed
不匹配currentTime
和CurrentTime
。如果选中委托,则应使用处理程序的大写名称。
你可以通过设置一个断点来确保Elapsed
处理程序被调用,或者在它的开头直接放一条日志消息。
最后,Clock_CurrentTime
每分钟只被调用一次。