调用Timer ElapsedEventHandler的正确方法是什么

时间:2009-11-13 17:05:54

标签: c# timer

我有一个定时器,每30秒调用一次偶数处理程序方法。 但我想首先调用这个方法。 事件处理程序方法的签名是

void TimerElapsed_GenerateRunTimes(object sender, System.Timers.ElapsedEventArgs e)

所以我该如何称呼它? 我可以做以下

TimerElapsed_GenerateRunTimes(timerGenerateRunTimes,null);

但我不确定这是否正确 除此之外,事件参数e将为null

3 个答案:

答案 0 :(得分:3)

至少传递一个EventArgs.Empty对象而不是null。此外,使用关键字“this”作为发件人手动调用事件是一种良好做法(AFAIK):

TimerElapsed_GenerateRunTimes(this, EventArgs.Empty);

答案 1 :(得分:1)

如果您不依赖于e不为空,我认为使用null调用您的方法时没有任何问题。毕竟这是你的方法,并没有什么特别之处,除了它匹配一些委托的签名。如果不在方法体中使用sender,则甚至不必传递计时器对象。

(注意:如果您使用某个事件实现自己的类,则始终希望将this作为sender传递给e的非空对象引发事件的方法。)

答案 2 :(得分:0)

最好创建一个单独的函数来完成计时器的工作,然后调用它们。这样,如果您想要检查发件人或事件处理程序中的事件参数,将来就不会出现混淆。您还可以在代码中知道代码是手动激活还是从事件中激活。