사진 설명을 입력하세요.

1)대리자 + 2)람다 -> 3)비동기 -> 4) .NET 네트워크

 

C# 스타일에 맞는 네트워크 프로그래밍을 하려면, 비동기(Thread, Task, Async, Parallel) 구조 구현을 이해해야 한다.

C# 스타일 비동기 구조 구현을 위해서는, 대리자와 이벤트를 이해해야 한다.

C# 에서 대리자와 이벤트의 사용은 사용자 생성 대리자와, func, action 대리자에 람다를사용 할 수 있어야 한다.


: C#은 객체지향 프로그래밍 언어다.

: Delegate(대리자)또한, 함수를 객체화시켜 다형성을 이루는 하나의 방법일 뿐이다.

 

C# delegate 참고 링크1

 

- Delegate

1. Noun (집단의 의사를 대표하는) 대표(자)

2. Verb (권한업무 등을) 위임하다

 

- CallBack

3. Noun 컴퓨터 (컴퓨터나 전화 사용자의) 회신


1. Delegate(대리자)

1) 같은 형태의 여러 메소드들은, 동일한 구조를 가진다.

2) 동일한 구조의 메서드들을, 대리자 형태로 묶을 수 있다.

3) 대리자는 매개변수에서 int, double 과 같은 Data Type 역할의 객체로써 다형성을 이룬다.

2. Generic Delegate

3. Delegate Chain

: 대리자는 같은 형태의 메서드들의 Data Type 역할을 할 수 있으므로, 인스턴스 생성이 가능하다.

: 메서드가 참조된 대리자의 인스턴스에 매소드 여러개를 참조하면, 참조된 매소드가 순차적으로 실행된다.

: 추가, += 연산자, Delegate.Combine() 메소드

: 제거, -= 연산자, Delegate.Remove() 메소드

- 매개변수가 없는 메서드의 대리자

- 매개변수가 있는 메서드의 대리자

 

4. Anonymous Method

: 매서드의 이름이 없는 메서드

: 매개변수 자리에 함수 구현

5. Event

이벤트는 event 키워드로 수식된 대리자

 

이벤트: public 한정자라도 클래스 외부에서 호출 불가

대리자: public internal 외부에서 얼마든지 호출 가능

 

대리자는 대리자대로 콜백 용도로 사용하고,

이벤트는 이벤`트대로 객체의 상태 변화나 사건의 발생을 알리는 용도로 구분해서 사용

 

이벤트를 선언시, 항상 비어있는 익명 메소드로 미리 초기화

 

6. Winform Control + Event 예제

// button1 클래스 내에,  click 이라는 이벤트 대리자가 선언되어 있다.
this.button1.Click += new System.EventHandler(button1_Click);

// click 이벤트 대리자에 button1_Click 이라는 메서드를 추가하면, 
// click 이벤트 대리자 실행시,  추가된, button1_Click 이 실행된다. 
private void button1_Click(object sender, EventArgs e)
{
   ((Button)sender).BackColor = Color.Red;
}

// 제공된 대리자는 void mehtodName(object sender, EventArgs e) 형태라는 것을 유추 할 수 있다.
ubiquitous4g