2013-08-01 3 views
1

그래서 나는 System.Timers.timer를 여러 번 틱합니다. "Timer.Elapsed"이벤트는 틱을 계산하고 일정한 틱 후에 타이머를 비활성화하는 이벤트 처리기에 가입되어 있습니다. 본인은 해당 이벤트의 구독을 취소하지 않습니다.Timer.Elapsed 이벤트를 두 번 이상 구독하면 어떻게됩니까?

동일한 이벤트 처리기에 이벤트를 구독 한 후 여러 번 틱 간격이 훨씬 짧다는 것을 알았습니까?

Timer.Elapsed 이벤트가 구독 취소없이 이벤트 핸들러에 지속적으로 가입하면 어떻게됩니까?

+2

를 사용하여 이벤트를 탈퇴 제거 할 수 있습니다 ... –

답변

1

이상의 이벤트를 구독하는 경우 이벤트가 호출 될 때마다 함수가 실행될 때마다

모든 함수에 대리자 함수 목록의 별도 복사본이 있기 때문에 발생합니다.

당신은 메모리 누수가 발생이

timer.tick -= yourFunction(); 
0

이벤트를 두 번 이상, 예를 들어 10 회 구독하면 해당 이벤트에 바인딩 된 메소드가 10 번 트리거됩니다.

관련 문제