2014-07-15 7 views
-1

이벤트 핸들러는 스레드와 항상 병렬로 실행됩니까 메인 스레드는 아닌가요?이벤트가 다른 스레드에서 실행됩니까?

감사합니다.

+2

이벤트가 이벤트를 발생시키는 스레드에서 실행됩니다 이벤트를 발생

는 다음과 같이 유사하다. 귀하의 질문이 무엇인지 확실하지 않습니다. –

답변

3

이벤트 처리기는 이벤트가 발생한 스레드와 동일한 스레드에서 실행됩니다. 백그라운드 스레드에서 이벤트를 트리거하는 경우 이벤트 핸들러는 동일한 백그라운드 스레드에서 실행됩니다. "주"스레드에서 이벤트를 발생 시키면 주 스레드에서 이벤트가 실행됩니다.

이벤트 처리기는 한 번에 하나씩 (동 기적으로) 실행됩니다.

이벤트 처리기는 "multicast delegates"이라고도하며 그 이름은 apt입니다. 이벤트 핸들러는 '이벤트'가 트리거 될 때마다 호출 할 함수 목록 일뿐입니다. 이전 목록이 완료 될 때까지 목록에서 "next"함수를 호출 할 수 없습니다.

List<Action> eventHandlers = new List<Action>(); 
foreach(Action currentHandler in eventHandlers) 
{ 
    currentHandler(); 
} 
+1

['Delegate.GetInvocationList()'] (http://msdn.microsoft.com/en-us/library/system.delegate.getinvocationlist.aspx)에서이 목록을 얻을 수도 있습니다. – Clemens

관련 문제