윈도우 프로그래밍의 주된 일은, 정의되어 있는(윈도우에서 정의 또는 개발자가 임의로 정의)
이벤트들이 일어났을 때 어떤 일을 하게 할지 코딩하는 것이다.
델리게이트와 이벤트는 함께 동작.
즉, 이벤트가 발생했을 때 델리게이트 인스턴스의 참조 값을 갖고 정의한 메소드를 찾아간다.
1. 이벤트 선언 - 이벤트와 델리게이트(참조점)의 연결
예) public event MyDelegate myevent;
<접근지정자> event <델리게이트이름> <이벤트멤버이름>
2. 이벤트에 델리게이트 인스턴스 추가/삭제 - 이벤트와 메소드 연결
추가. 예) ec.myevent+= new MyDelegate(EventCallFunc);
삭제. 예) ec.myevent -= new MyDelegate(EventCallFunc);
3. 이벤트 발생
예) myevent();
using System;
namespace ConsoleApplication1
{
public delegate void MyDelegate();
/// <summary>
/// Class1에 대한 요약 설명입니다.
/// </summary>
class Class1
{
/// <summary>
/// 해당 응용 프로그램의 주 진입점입니다.
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 여기에 응용 프로그램을 시작하는 코드를 추가합니다.
//
EventClass ec = new EventClass();
ec.myevent+=new MyDelegate(EventCallFunc1);
ec.myevent+=new MyDelegate(EventCallFunc2);
ec.func();
Console.WriteLine("###### 델리게이트 삭제 후 #######");
ec.myevent-=new MyDelegate(EventCallFunc1);
ec.func();
}
static void EventCallFunc1()
{
Console.WriteLine("EventCallFunc1() 메소드 호출됐삼.");
}
static void EventCallFunc2()
{
Console.WriteLine("EventCallFunc2() 메소드 호출됐삼.");
}
}
public class EventClass
{
public event MyDelegate myevent; //이벤트와 델리게이트 연결 ->>> 이벤트 선언
public void func()
{
myevent(); // 이벤트 발생
}
}
}
'dev, tech > Windows P' 카테고리의 다른 글
Windows 서비스 (0) | 2006.01.25 |
---|---|
일단 용어 정리 (0) | 2006.01.19 |
델리게이트(Delegate) : 위임 (0) | 2006.01.17 |
GetEnumerator (0) | 2006.01.17 |
메소드를 위한 상속성 키워드 (0) | 2006.01.16 |
댓글