C#에서 이벤트가 발생하면 멀티캐스트 델리게이트라는

동일한 시그니처를 가지는 델리게이트를 연속 호출하는 델리게이트로 구독 메서드목록이 차례대로 호출되는데,


webClient.DownloadFileCompleted += (AsyncCompletedEventArgs e) => { ...}


하지만 매번 멀티캐스트 델리게이트가 작동 되는건 자원 낭비를 야기함으로 다음과 같은 가상 함수를 구현함.


protected virtual void OnDownloadFileCompleted(AsyncCompletedEventArgs e)

{ if (DownloadFileCompleted != null) { DownloadFileCompleted(this, e); } }


이 메서드의 특징은 이벤트가 구독되지 않았을 경우, 그걸 컴파일 시간에 분석해서 멀티캐스트 델리게이트 호출을 방지한다는 점임.