#event

Programming/Old 2016. 4. 11. 10:19

이벤트는 사건을 다룬다. 

그 사건이란 UI 상에 문자를 출력하는 것일수도 있고, 산술 연산이거나 네트워크와 관련된 작업이 될 수 있다. 

이벤트를 설명할 때 키보드나 마우스를 눌렀을 때 발생하는 사건에 빗댄 설명은 너무 부족한 설명이다.


C#의 예에서 event 키워드를 이용한다면 사건의 추가(oper : +=)와 삭제(oper : -=)가 가능하다.

event 키워드 선언을 위해서는 delegate 타입이 필요하다. 

delegate를 이용한다면 사건을 함수로 클로저 하므로 사건의 관리가 용이해진다.

아래는 EXYNOA라는 분의 블로그의 'C# 강좌 19편. 델리게이트와 이벤트(Delegates and Events)'라는 글의 소스코드에서 이벤트를 추가하는 소스코드를 추가하였다.

namespace ConsoleApplication7
{
public delegate void MyEventHandler(string message);
public delegate void MyEventHandler2(string message);

class Publisher
{
public event MyEventHandler Active;
public event MyEventHandler2 Active2;

public void DoActive(int number)
{
if (number % 10 == 0)
Active("Active!" + number);
else
Console.WriteLine(number);
}

public void DoActive2(int number)
{
if (number % 10 == 0)
Active2("Active!" + number);
else
Console.WriteLine(number);
}
}

class Subscriber
{
static public void MyHandler(string message)
{
Console.WriteLine("!!!!!!"+message);
}
static public void MyHandler2(string message)
{
Console.WriteLine("@@@@@@@@@@@"+message);
}
static void Main(string[] args)
{
Publisher publisher = new Publisher();
publisher.Active += new MyEventHandler(MyHandler);
publisher.Active2 += new MyEventHandler2(MyHandler2);
//for (int i = 1; i < 50; i++)
publisher.DoActive(30);
publisher.DoActive2(30);
}
}


admin