[C#] 이벤트를 만들고 사용하기

2021. 1. 17. 21:15개발/C#

C#은 이벤트를 생성하고 전달받는 처리가 아주 쉽게 잘 정의되어 있습니다. 

 

1. 이벤트를 만드는 코드 

EventHandler 를 멤버변수로 선언하고 this.이벤트() 함수를 실행하면 콜백 이벤트가 발생하는 식입니다.

1. 이벤트 정의
public event EventHandler OnOrderReply;

2. 이벤트 호출
this.OnOrderReply(this, arg);

3. 이벤트 호출 시 원하는 값을 전달하고자 한다면 EventArgs 를 상속받아 간단한 전달용 클래스를 하나 만들면 됩니다.
 public class OrderReplyEventArgs : EventArgs
    public class DoOrder
    {

        // 중략
        // ....
        // 이벤트 콜백 
        public event EventHandler OnOrderReply;
        public class OrderReplyEventArgs : EventArgs
        {
            public string sRetMsg;
        }
        
        
        private void testEvent()
        {
            OrderReplyEventArgs arg = new OrderReplyEventArgs();
            arg.sRetMsg = "이벤트 테스트 ";
            this.OnOrderReply(this, arg);
        }

 

2. 이벤트 수신 코드 

이벤트를 이용하는 곳에서는 아래처럼 처리합니다.

1. 이벤트를 수신받을 함수 선언
m_order.OnOrderReply += new EventHandler(m_order_onOrderReply);

2. 이벤트 수신 함수 구현
 private void m_order_onOrderReply(object sender, EventArgs e)

 

    public partial class fmST2 : Form
    {

        DoOrder m_order = new DoOrder();

        private void fmST2_Load(object sender, EventArgs e)
        {

            // 중략

            ///////////////////////////////////////////////
            // 이벤트 수신 함수 등록 
            m_order.OnOrderReply += new EventHandler(m_order_onOrderReply);
            ///////////////////////////////////////////////

            // 중략


        }

        // DoOrder 이벤트 수신 처리 
        private void m_order_onOrderReply(object sender, EventArgs e)
        {
            string sErr = ((DoOrder.OrderReplyEventArgs)e).sRetMsg;
            Debug.WriteLine(sErr);
        }
		// 중략