我在一个类中有一个计时器,当这个计时器触发时我想调用这个类的实例方法。如何从静态计时器回调方法中访问它?
private void ClassInstanceMethod()
{
}
public static void TimerFired(object source, ElapsedEventArgs e)
{
// Want to call ClassInstanceMethod() here
}
private void startTimer()
{
timer = new Timer();
timer.Interval = 1000;
timer.Elapsed += new ElapsedEventHandler(TimerFired);
timer.AutoReset = false;
timer.Enabled = true;
}
解决
我误以为TimerFired
必须是静态的 - 它没有。
答案 0 :(得分:1)
你做不到。 source参数是Timer对象,ElapsedEventArgs对象不包含对类实例的任何引用。正如在评论中讨论的那样,你可以使TimerFired方法非静态(即实例),从那里你就可以安全地从类中调用ClassInstanceMethod和其他实例方法。