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 |