[C# WPF] 이벤트 구독이란?

Doyeon Noh·2024년 11월 29일

이벤트 구독에 대해 간단히 설명해 드릴게요.

이벤트란?

이벤트는 프로그램 내에서 특정한 일이 발생했음을 나타내는 신호입니다. 예를 들어, 사용자가 버튼을 클릭하거나, 데이터가 업데이트되는 경우가 이벤트입니다.

구독이란?

이벤트 구독은 특정 이벤트가 발생했을 때, 그 이벤트를 "관찰"하고 응답할 수 있도록 설정하는 것입니다. 즉, 이벤트가 발생하면 미리 정의된 코드를 실행할 수 있도록 하는 것입니다.

비유

이벤트 구독을 간단한 비유로 설명해볼게요:

  1. 뉴스레터 구독:

    • 신문사에 뉴스레터를 구독하면, 새로운 기사가 나올 때마다 이메일로 소식을 받게 됩니다.
    • 여기서 뉴스레터가 "이벤트"이고, 구독자는 그 이벤트가 발생할 때 알림을 받는 것입니다.
  2. 이벤트 구독 코드:

    • 코드에서 eventObservabl.AsObservable("TEST_FRAME_RESULT").Subscribe(e => OnTestFrameResult(e));는 "TEST_FRAME_RESULT"라는 이벤트가 발생하면 OnTestFrameResult라는 메서드를 실행하겠다는 의미입니다.

요약

  • 이벤트: 특정 행동이나 상태의 변화.
  • 구독: 그 이벤트가 발생했을 때 어떤 행동을 할 것인지 미리 정해 놓는 것.

이런 방식으로 프로그램이 비동기적으로 작동할 수 있습니다.

주어진 코드는 C#에서 Reactive Extensions (Rx)를 사용하여 이벤트를 구독하는 예시입니다. 이 코드는 Application.Current.AuroraEnv().EventObservable을 통해 이벤트를 관찰하고, 특정 이벤트 ID에 대한 구독을 설정합니다.

다음은 코드의 주요 부분에 대한 설명입니다:

  1. 이벤트 관찰자 생성:

    var eventObservabl = Application.Current.AuroraEnv().EventObservable;
    • Application.Current.AuroraEnv().EventObservable를 통해 현재 애플리케이션의 이벤트 관찰자를 가져옵니다.
  2. 이벤트 구독:

    eventObservabl.AsObservable(EventIds.INSPECT_RESULT).Subscribe(mObserver_);
    • INSPECT_RESULT 이벤트를 구독합니다. mObserver_는 이 이벤트에 대한 처리를 담당하는 관찰자입니다.
  3. TEST_FRAME_RESULT 이벤트 구독:

    eventObservabl.AsObservable("TEST_FRAME_RESULT").Subscribe(e => OnTestFrameResult(e));
    • TEST_FRAME_RESULT 이벤트를 구독하고, 해당 이벤트가 발생할 때 OnTestFrameResult 메서드를 호출합니다.

이 코드는 이벤트 기반 프로그래밍에서 비동기적으로 이벤트를 처리하는 방법을 보여줍니다.

profile
C# 신입개발자

0개의 댓글