반응형
Event 함수
- event 함수 호출시 연결된 delegate를 이용해 Event Handler(이벤트 처리 함수)를 호출하는 기능
- event 키워드를 사용하여 생성
- Event Handler는 리턴형이 없어 항상 void로 반환함
- 모든 이벤트는 delegate를 기반으로 함
- 이벤트는 객체가 있어야 함
- 이벤트 처리 함수는 이름 앞에 보통 "On"으로 시작하게 함
[이벤트 동작 순서]
1) delegate 정의
2) delegate와 동일한 이름으로 이벤트를 정의
3) 이벤트 발생시 처리될 이벤트 처리 함수(Event Handler)를 정의
4) delegate를 위한 함수가 있어야 함
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace event_programming
{
//This is Subscriber Class
class Program
{
static void Main(string[] args)
{
AddTwoNumbers a = new AddTwoNumbers();
// 이벤트에 delegate 추가
a.ev_OddNumber += new AddTwoNumbers.dg_OddNumber(EventMessage);
a.Add();
Console.Read();
}
// 이벤트 발생시 delegate가 이 함수를 호출함
static void EventMessage()
{
Console.WriteLine("********Event Executed : This is Odd Number**********");
}
}
//This is Publisher Class
class AddTwoNumbers
{
public delegate void dg_OddNumber(); // delegate 선언
public event dg_OddNumber ev_OddNumber; // Event 선언
public void Add()
{
int result;
result = 5 + 4;
Console.WriteLine(result.ToString());
// result가 홀수면 이벤트를 발생시킴
if((result % 2 != 0) && (ev_OddNumber != null))
{
ev_OddNumber(); // 이벤트 발생
}
}
}
}