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);
}
[출처] Receive Thread 데이터 처리 및 이벤트 생성|작성자 만쥬
VS2008 Project Error (0) | 2017.11.01 |
---|---|
스레드 생성과 invoke를 사용한 대리자 함수호출 (0) | 2017.09.20 |
C# JSON 형식으로 전송 데이터 만들기 (0) | 2017.09.20 |
C# HTTP POST방식 JSON전송 (0) | 2017.09.20 |
String.Format 을 이용한 문자정렬 왼쪽 오른쪽 가운데 (0) | 2017.07.19 |