我使用System.Timers.Timer类创建一个带有Timer.Elapsed事件的计时器。问题是,只有在间隔时间过后,才会第一次触发Timer.Elapsed事件。
有没有办法在启动计时器后立即引发Timer.Elapsed事件?
我在System.Timers.Timer类中找不到任何相关的属性。
发布于 2011-08-03 17:10:26
只需自己调用Timer_Tick方法即可。
如果您不想处理Tick回调方法的参数,那么只需将Timer_Tick中的代码放到另一个方法中,然后从Timer_Tick和Timer.Start()调用之后调用该方法
正如@Yahia所指出的,您还可以使用System.Threading.Timer计时器,您可以将其设置为初始延迟为0。不过请注意,回调将在不同的线程上运行,而不是在UI线程上运行的 Windows.Forms.Timer 上的回调。因此,如果您使用System.Threading.Timer (未正确调用)更新任何UI控件,它将崩溃。
发布于 2012-11-02 18:21:59
我只是用空参数调用了**ElapsedEventHandler**。
发布于 2015-06-02 22:24:26
我知道这个答案有点晚,但是如果你想让你的System.Timers.Timer在100ms (默认时间间隔)内触发,那么你只需要在没有指定时间间隔的情况下初始化Timer对象,然后将被调用函数中的时间间隔设置为你喜欢的任何时间间隔。下面是我在Windows服务中使用的示例:
private static Timer _timer;
protected override void OnStart(string[] args)
{
_timer = new Timer(); //This will set the default interval
_timer.AutoReset = false;
_timer.Elapsed = OnTimer;
_timer.Start();
}
private void OnTimer(object sender, ElapsedEventArgs args)
{
//Do some work here
_timer.Stop();
_timer.Interval = 50000; //Set your new interval here
_timer.Start();
}https://stackoverflow.com/questions/6924072
复制相似问题