从静态时间回调调用实例方法

时间:2011-07-27 05:03:12

标签: c# timer

我在一个类中有一个计时器,当这个计时器触发时我想调用这个类的实例方法。如何从静态计时器回调方法中访问它?

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必须是静态的 - 它没有。

1 个答案:

答案 0 :(得分:1)

你做不到。 source参数是Timer对象,ElapsedEventArgs对象不包含对类实例的任何引用。正如在评论中讨论的那样,你可以使TimerFired方法非静态(即实例),从那里你就可以安全地从类中调用ClassInstanceMethod和其他实例方法。