본문 바로가기
dev, tech/Windows P

이벤트(event)

by 구띵 2006. 1. 18.

윈도우 프로그래밍의 주된 일은, 정의되어 있는(윈도우에서 정의 또는 개발자가 임의로 정의)

 

이벤트들이 일어났을 때 어떤 일을 하게 할지 코딩하는 것이다.

 

 

델리게이트와 이벤트는 함께 동작.

 

즉, 이벤트가 발생했을 때 델리게이트 인스턴스의 참조 값을 갖고 정의한 메소드를 찾아간다.

 

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

댓글