본문 바로가기

IT프로그래밍

[c#]delegate 사용 기초


16년 12월 9일 작성


delegate, event


라이브러리 부분

1. delegate 선언

2. event 선언


실행 클래스 부분

1. 이벤트 등록( 여기서 실행 될 함수 포함)

2. 함수 정의 및 구현



라이브러리 소스


            public delegate void data_in(byte[] data);

            public static event data_in data_receive;


byte []qqqq = new byte[1024];

data_receive(qqqq);


끝.




클래스 소스


socket_lib.data_receive += new socket_lib.data_in(get_data);


public void get_data(byte[] msg)

        {

            string str_data;


            //str_data = System.Text.Encoding.ASCII.GetString(msg);     //아스키, 한글 깨짐

            str_data = System.Text.Encoding.UTF8.GetString(msg);        //UTF8로 변환


            CheckForIllegalCrossThreadCalls = false;    //임시

            listBox1.Items.Add(str_data);

        }



1. 라이브러리에서 event를 선언 data_in이라는 형식을 갖는 data_receive 이벤트

2. delegate에서 data_in이라는 형식은 void를 반환하고, byte[]라는 파라미터를 갖는다고 선언

3. 클래스에서 이벤트 할당 +=,  이벤트 발생했을 때 호출할 함수 메이크


결과

라이브러리에서 해당 이벤트 발생(시리얼 통신쪽에서 랜덤으로 들어올 때)했을 때, data_in(string)형식으로 클래스의 함수로 진입해서 실행 시킨다.