2010-11-24 2 views
2

을 발사 할 때 다른 구문 형태 나는 C#에서 이벤트를 발사의 다른 구문 버전을 발견하고, 정말 정확히 차이가 사이에 무엇인지 파악하지 못할 :C 번호 : 이벤트

if (OnMyEvent!= null) 
    OnMyEvent(this, new MyEventEventArgs()); 

과 :

OnMyEvent.Invoke(this, new MyEventEventArgs()); 

특히 스레드 컨텍스트가 변경되지 않는 경우?

미리 감사드립니다.

답변

4

리플렉터 또는 ildasm을 사용하면 정확히 동일한 것으로 (null을 모듈화 함) 컴파일됩니다 (Invoke() 호출).

바람직한 점은 항상 null을 확인해야하며 Invoke() 구문을 통한 호출 구문을 더 자주 볼 수 있습니다.

+0

감사합니다. [이 코멘트에 15 자 이상을 채우는 중 :)]] – TheZeta

1

Invoke 메서드는 리플렉션으로 이벤트를 트리거하려고 할 때 유용합니다.