둘 사이의 의미상의 차이와 당신이 당황한 말의 이유는 사실상 콜백과 이벤트의 차이가 있다는 것입니다. 즉, 의미 적으로입니다.
기술적으로는 거의 동일한 방식으로 구현되므로 설명해 드리겠습니다.
콜백은 호출하려는 코드의 계약에서 콜백, 진행 상황보고, 완료 여부 또는 사용자에게 알리는 것이 필요한 곳을 제공해야 할 때입니다.
도서관에 전화를 걸어 도서를 찾은 다음 번이 다시 전화하면으로 전화를 거는 것 같습니다. 전화가 오길 기대합니다. 또한 도서관은 명시 적으로 그렇게하지 않는 한 사람들에게 그들이 발견 한 책에 관해 알려주지 않습니다. 그들이 선반 위 또는 뒤에 다른 책을 발견하면, 이것 때문에 그들이 (또는 다른 누구에게) 전화를 기대하지 마십시오.
이벤트는 "익명 방송"으로, 숲에서 소리 지르는 것과 같습니다. 기본적으로 "누군가가 신경 쓰면 X가 일어났습니다."라고 말합니다. 당신은이 전에 누구에게나 전화 할 것을 명시 적으로 말하지 않았으며, 누가들을 것인가를 알지 못할 수도 있습니다.
기술적으로 코드에서 대리자를 메서드에 전달하거나 이벤트에 연결하여 (이 메서드는 대리자를 메서드에 저장함) 이러한 점에서이 점이 양방향입니다. 동일한 동전이지만, 의미는입니다.
일반적으로 이벤트는 "C# -ish"가 더 많이 느껴지고 대개 다루기가 더 쉽지만 두 가지 모두 프로그래밍 언어와 도구 상자에 위치합니다.
가능한 복제 http://stackoverflow.com/questions/2020381/when-to-use-callbacks-instead-of-events-in-c – Liam
콜백을 사용하면 안됩니다. 적절한 경우'Task'또는'IObservable' (Rx) 이벤트를 사용해야합니다. –
SLaks
@SLaks 나에게 간단한 시나리오를 제공해 줄 수 있습니까? – Naren