2013-06-27 4 views
2

저는 C#을 처음 사용합니다. 이제 응용 프로그램에서 사용자 지정 이벤트를 만드는 방법을 배웠습니다.이벤트 핸들러 또는 콜백

콜백을 사용해야하는 이유를 알고 싶습니다. 이벤트는 콜백보다 간단 해 보이며 인수에서 대리자를 전달할 필요가 없습니다.

나는 msdn을 언급하고는

언급 된

전화 백은

이 나에게 몇 가지 예제를 제공주십시오 악수를 같이하는 동안 이벤트는, 익명 방송처럼 이 진술. 내가 콜백과 이벤트 핸들러를 어디에서 사용할 지 혼란 스럽다.

+3

가능한 복제 http://stackoverflow.com/questions/2020381/when-to-use-callbacks-instead-of-events-in-c – Liam

+2

콜백을 사용하면 안됩니다. 적절한 경우'Task '또는'IObservable' (Rx) 이벤트를 사용해야합니다. – SLaks

+0

@SLaks 나에게 간단한 시나리오를 제공해 줄 수 있습니까? – Naren

답변

4

둘 사이의 의미상의 차이와 당신이 당황한 말의 이유는 사실상 콜백과 이벤트의 차이가 있다는 것입니다. 즉, 의미 적으로입니다.

기술적으로는 거의 동일한 방식으로 구현되므로 설명해 드리겠습니다.

콜백은 호출하려는 코드의 계약에서 콜백, 진행 상황보고, 완료 여부 또는 사용자에게 알리는 것이 필요한 곳을 제공해야 할 때입니다.

도서관에 전화를 걸어 도서를 찾은 다음 번이 다시 전화하면으로 전화를 거는 것 같습니다. 전화가 오길 기대합니다. 또한 도서관은 명시 적으로 그렇게하지 않는 한 사람들에게 그들이 발견 한 책에 관해 알려주지 않습니다. 그들이 선반 위 또는 뒤에 다른 책을 발견하면, 이것 때문에 그들이 (또는 다른 누구에게) 전화를 기대하지 마십시오.

이벤트는 "익명 방송"으로, 숲에서 소리 지르는 것과 같습니다. 기본적으로 "누군가가 신경 쓰면 X가 일어났습니다."라고 말합니다. 당신은이 전에 누구에게나 전화 할 것을 명시 적으로 말하지 않았으며, 누가들을 것인가를 알지 못할 수도 있습니다.

기술적으로 코드에서 대리자를 메서드에 전달하거나 이벤트에 연결하여 (이 메서드는 대리자를 메서드에 저장함) 이러한 점에서이 점이 양방향입니다. 동일한 동전이지만, 의미는입니다.

일반적으로 이벤트는 "C# -ish"가 더 많이 느껴지고 대개 다루기가 더 쉽지만 두 가지 모두 프로그래밍 언어와 도구 상자에 위치합니다.

+0

고맙다 @Lasse V.Karlsen 그리고 예제는 대단해 !! 1 – Naren