2011-07-27 2 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 및 다른 인스턴스 메서드를 안전하게 호출 할 수 있습니다.

관련 문제