2011-07-27 14 views
2

私はクラス内にタイマーを持っています。このタイマーが起動すると、このクラスのインスタンスメソッドを呼び出したいと思います。どのように私は静的タイマーのコールバックメソッドからこれにアクセスするのですか?静的な時間のコールバックからインスタンスメソッドを呼び出す

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

またはTimerFiredメソッドは非静的ですか? – carlosfigueira

+0

もちろん、静的メソッドは呼び出し元のインスタンスオブジェクトをパラメータとして取得することがよくあります。 – Egil

答えて

1

できません。 sourceパラメーターはTimerオブジェクトであり、ElapsedEventArgsオブジェクトにはクラスのインスタンスへの参照が含まれていません。コメントで説明したように、TimerFiredメソッドを非静的(インスタンス)にすることができます。そこから、クラスからClassInstanceMethodやその他のインスタンスメソッドを安全に呼び出すことができます。

関連する問題