미처 완성되지 못한 알고리즘

event내부 구조 및 예제 본문

IT/c#

event내부 구조 및 예제

-June- 2017. 9. 12. 19:32

public event EventHandler Event;    <- 우리가 쓰는 이벤트 선언

 

 

 

 

 

 

컴파일러 내부에서 돌아가는 이벤트 구조.

 

-------------------------------------------------------------------------------------

private EventHandler _Event;

 

public event EventHandler Event

{

add

{

lock(this) {_Event +=value;}

}

 

remove

{

lock(this) {_Event -=value;}

}

}

 

 

 

-------------------------------------------------------------------------------------

    class ExEvent
    {
        private string name;
        public ExEvent(string name) { this.name = name; }
        public string NAME { get { return name; } }
        public delegate void OnEvent(object sender, EventArgs arg);
        public event OnEvent onEvent;
        public void RunEvent()
        {
            if (onEvent != null)
                onEvent(this, new EventArgs());
        }
    }

    class Program
    {  
        static void OnEvent(object sender, EventArgs arg)
        {
            ExEvent evt = (ExEvent)sender;
            Console.WriteLine("{0} 이벤트 발생!", evt.NAME);
        }

        static void Main(string[] args)
        {
            ExEvent event1 = new ExEvent("홀수");
            ExEvent event2 = new ExEvent("짝수");
            event1.onEvent += OnEvent;
            event2.onEvent += OnEvent;
            Console.WriteLine("정수를 입력하세요.");
            int num = int.Parse(Console.ReadLine());
            if (num % 2 == 1)
                event1.RunEvent();

            else
                event2.RunEvent();
        }//main

    }//class