저는 event 예외 처리 할 때 아래와 같이 진행해왔었습니다.
SomethingEvent 이벤트를 아무도 등록하지 않았을때의 예외처리입니다.
public event EventHandler SomethingEvent;
public void RaiseSomethingEvent() { if (this.SomethingEvent != null) this.SomethingEvent(null,null); }
|
아래와 같이 빈 delegate를 이용하면 null이 아니기 때문에 event를 등록한 개체가 없더라도 예외가 발생하지 않습니다.
멀티쓰레드 환경도 기존의 코드와 달리 null 체크를 하지 않기 때문에 아무런 문제없이 잘동작합니다.
public event EventHandler SomethingEvent = delegate { };
public void RaiseSomethingEvent() { this.SomethingEvent(null,null); }
|
아래의 코드도 동일하게 잘 동작합니다.
public event Action<string> SomethingEvent = delegate { };
public void RaiseSomethingEvent() { this.SomethingEvent("foo"); }
|
참고 : Pro Wpf and Silverlight MVVM - Chapter 5. Event and Commands (112p)
'.Net > C#' 카테고리의 다른 글
C# 5.0 다중 스레드[1] - 프로덕션 코드에서 스레드를 유휴 상태로 만들어서는 안 된다. (0) | 2014.08.21 |
---|---|
C# WeakReference 테스트 (0) | 2013.09.12 |
C# Keys 열거형 (0) | 2013.07.11 |
C# 4.0 선택적 매개변수, 명명된 매개변수 (0) | 2013.01.10 |
C# CMD 창 띄우지 않고 명령어 실행하기 (0) | 2012.12.26 |