언어/C#
[C#] 이벤트(event)란?
돌멩이수프
2022. 5. 27. 18:46
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