Timer.Elapsed 이벤트 대리자 서명에는 두 개의 매개변수가 있다. object source - 이벤트를 발생시킨 개체에 대한 참조 ElapsedEventArgs e - 이벤트가 보낸 인수들 이 이벤트나 여러 이벤트들에서 object 형식 매개변수를 사용하는 이유는, 종종 여러 개체들에 의해 발생된 여러 개의 동일한 이벤트들을 하나의 이벤트 처리기로 처리하는 경우에 어떤 개체가 이벤트를 발생시켰는지를 식별할 수 있게 하기 위해서이다. 6행 : 이벤트 처리기가 이벤트를 발생시킨 개별 개체에 대해 약간씩 다른 작업을 처리해야 할 때에는 이벤트 처리기 매개변수 중 하나로 이벤트를 발생시킨 개체를 넘겨받는 방식이 주로 쓰인다. 그리고 System.EventsArgs 를 상속한 클래스에 이벤트에 대한 정보..
독자적인 이벤트를 정의하고 사용하는 방법이다. 여기서는 Connection 개체(이벤트를 발생시킨다)와 Display 개체(이벤트를 처리한다)를 구현해본다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 using System; using System.Timers; namespace ConsoleApp3 { public delegate void MessageHandler(string messageText); // 대리자 정의 internal class Connection { public event MessageHandler MessageArrived; // 이벤트가 사용할 대..
이벤트는 개체에 의해 발생되며, 그를 처리하기 위한 코드를 제공해야 한다는 점에서 예외와 비슷하다. 그러나 몇가지 중요한 차이들이 존재한다. 가장 중요한 차이는 이벤트에는 try...catch 에 해당하는 구조가 없다는 점이다. 이벤트의 경우에는 반드시 이벤트를 등록해야 한다. 이벤트를 등록한다는 것은 이벤트가 발생했을 때 실행될 코드를 이벤트 처리기(event handler)라는 형태로 작성한다는 의미이다. 하나의 이벤트에는 여러개의 처리기들이 등록될 수 있으며, 그 이벤트가 발생하면 등록된 모든 이벤트 처리기들이 호출된다. 이벤트 처리기는 그 이벤트를 발생시킨 개체의 클래스의 일부일 수 도 있으나, 다른 클래스들 안에 존재하는 경우가 많다. 이벤트 처리기 자체는 그냥 함수이다. 이벤트 처리기 함수의 ..
대리자, 이벤트 처리기 함수에 대한 참조를 저장하는 형식 함수의 선언과 비슷하지만 아래와 다른 점이다. -함수 본문은 없다 - delegate 키워드 사용 (아래코드 3행) delegate int processDelegate(double parma1, double param2); 키워드 : delegate 대리자 형식 이름 : processDelegate 반환 자료형 : int 인수자료형 : double, double 대리자 선언은 (아래코드 3행) 반환 형식과 매개변수 목록을 가진 하나의 함수(processDelegate) 서명을 지정한다. (가상함수나 함수 포인터와 비슷한가...) 서명 : 함수의 반환 자료형과 함수 매개변수(인수)의 자료형이 같은것 = 서명일치 대리자 선언해둔 후에는 그 대리자 형식..