상세 컨텐츠

본문 제목

Receive Thread 데이터 처리 및 이벤트 생성

C#

by 탑~! 2017. 9. 20. 10:15

본문

1. 이벤트를 생성할 클래스를 만든다.

public delegate void WorkerEventHandler(WorkerEventHandlerArgs e);

    public class WorkerEventHandlerArgs : EventArgs
    {

// 이벤트 아큐먼트로 사용할 변수
public char charRes = new char(); 
public string recvString = null;

    }

 

2. 자신이 만든 소켓 클래스에 이벤트 추가 (XSocket 클래스)

public event WorkerEventHandler RES_Login;

 

RES_Login += new WorkerEventHandler(OnRecvLogin);

 

public void OnRecvLogin(WorkerEventHandlerArgs e)
 {
            // null오류 방지
}

 

3. 이벤트 발생

e.recvString = "결과값";
e.charRes = 'A';
RES_Login(e);

 

4. 이벤트를 받을 클래스에 이벤트 연결

XSocket m_Socket = null;

m_Socket = new XSocket();

m_Socket.RES_Login += new WorkerEventHandler(OnRecvLogin);

 

5. 기능 구현

public void OnRecvLogin(WorkerEventHandlerArgs e)
{
            m_UserName = e.recvString;
            m_Result = e.charRes;

 

//이곳에서 UI속성을 변경할 경우 크로스 쓰레드 에러가 나므로 delegate를 사용하여 변경하도록 함

this.Invoke(new LoginHandling(HandlingLogin));

}

 

6. 대리자 정의

private delegate void LoginHandling();
private void HandlingLogin()
{
  lblMyInfo.Text = m_UserName;
  lblMemoCount.Text = string.Format("(0/{0:%s})", m_MessageCount);

}


관련글 더보기