【发布时间】:2017-05-15 09:15:29
【问题描述】:
所以我想开始检查从我的class 过去的时间,当这个time 过去时(1 分钟)我想引发事件:
public class TimeOut
{
private readonly int TIME_OUT = 60;
private System.Timers.Timer _timer;
private Stopwatch _stopwatch;
public event TimeOutHandler TimePassed;
public void Initiate()
{
_timer = new System.Timers.Timer();
_timer.Interval = 1000;
_timer.Elapsed += _timer_Elapsed;
_stopwatch = new Stopwatch();
}
public void Start()
{
_stopwatch.Start();
_timer.Start();
}
public void _timer_Elapsed(object sender, ElapsedEventArgs e)
{
if (_stopwatch.ElapsedMilliseconds / 1000 >= TIME_OUT)
{
if (TimePassed!=null)
{
TimePassed(sender, null);
Stop();
}
}
}
public void Stop()
{
_timer.Stop();
_stopwatch.Stop();
}
}
用法
TimeOut timeOut = new TimeOut();
timeOut.TimePassed += timeOut_TimePassed;
timeOut.Initiate();
timeOut.Start();
private void timeOut_TimePassed(object sener, System.EventArgs e)
{
}
所以我不知道为什么,但我的 timer elapsed 函数似乎永远不会启动。
我尝试使用_timer.Enabled = true; 而不是_timer.Start();,但这仍然有帮助。
【问题讨论】:
-
TimePassed(sender, null);最好传递EventArgs.Empty而不是null。TimePassed(sender, EventArgs.Empty);
标签: c# timer console stopwatch