[C#] 이벤트(event)란?

2022. 5. 27. 18:46·언어/C#
728x90

이벤트 클래스는 클래스 안에서 특정한 일이 발생했을 때 구독자들에게 그 일을 알리는 메커니즘이다.

 

using System;

namespace ServerStudy
{
    class Publisher
    {
        public delegate void OnInputKey(); // OnInputKey라는 이름의 이벤트 핸들러 델리게이트 선언
        public event OnInputKey InputKey; // InputKey라는 이름의 이벤트 선언

        public void Update()
        {
            if (Console.KeyAvailable == false)
                return;

            ConsoleKeyInfo info = Console.ReadKey();
            if (info.Key == ConsoleKey.Enter)
                InputKey();
        }
    }
}

 

이벤트를 발생하는 클래스다. 이벤트 핸들러는 말 그대로 이벤트를 관리하는 델리게이트다. Publisher라는 이름을 달아준 그대로 클래스의 Update 함수에서는 사용자가 엔터키를 누르는지 안 누르는지 확인한 후 사용자가 엔터키를 입력하는 순간 InputKey()라는 이벤트를 발생시킨다.

 

using System;

namespace ServerStudy
{
    class Subscriber
    {
        static void OnInputTest()
        {
            Console.WriteLine("Enter!");
        }

        static void Main(string[] args)
        {
            Publisher _publisher = new Publisher();
            _publisher.InputKey += OnInputTest; // InputKey가 활성화되면 OnInputTest 함수가 호출됨.

            while (true)
                _publisher.Update();
        }
    }
}

 

사용자가 엔터키를 눌러 InputKey() 이벤트가 발생하면 Subscriber 클래스에서 엮어놓은 OnInputTest 함수가 호출된다.

 

 

OnInputTest 속 Enter!가 성공적으로 출력되는 모습을 확인할 수 있다.

728x90

'언어 > C#' 카테고리의 다른 글

[C#] 바이트 배열을 int로, int를 바이트 배열로  (0) 2022.06.04
[C#] delegate (델리게이트 / 대리자)와 Invoke  (0) 2022.05.31
[C#] Volatile이란?  (0) 2022.05.26
[C#] Dictionary란  (0) 2022.05.02
[C#] virtual과 abstract (추상 클래스)  (0) 2022.05.02
'언어/C#' 카테고리의 다른 글
  • [C#] 바이트 배열을 int로, int를 바이트 배열로
  • [C#] delegate (델리게이트 / 대리자)와 Invoke
  • [C#] Volatile이란?
  • [C#] Dictionary란
돌멩이수프
돌멩이수프
Information technology
  • 돌멩이수프
    WHAT DOES "IT" STAND FOR?
    돌멩이수프
  • 전체
    오늘
    어제
    • 분류 전체보기 (237) N
      • 언어 (73)
        • html (3)
        • css (1)
        • java (6)
        • C (26)
        • C++ (2)
        • C# (29)
      • 공부 (7)
        • Unity (43)
        • 게임 서버 (26)
        • 네트워크 (5)
        • 데이터베이스 (7)
        • EFCore (19)
        • 기타 (14)
        • Git (5)
        • 운영체제 (1)
        • 소프트웨어공학 (21)
      • 2024-여름 (12)
      • 자기 관리 (2) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    디자인패턴
    C
    게임서버
    EFCore
    HTML
    코딩
    자바
    unity
    네트워크
    Entityfamework
    java
    백준
    C언어
    Python
    C#
    유니티
    tcp
    EntityFramework
    라즈베리파이
    coding
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
돌멩이수프
[C#] 이벤트(event)란?
상단으로

티스토리툴바