728x90

목표

 

이벤트 전달용 <데이터 클래스> 자료형 구현

더보기
// [이벤트 전달용 데이터 클래스]
public class TextReceivedEventArgs : EventArgs
{
    public string ClientInfo { get; set; }
    public string TextReceived { get; set; }

    public TextReceivedEventArgs(string _clientInfo, string _textReceived)
    {
        ClientInfo = _clientInfo;
        TextReceived = _textReceived;
    }
}

 

이벤트 정의 구현

더보기
// [1] 텍스트 수신 이벤트
public event EventHandler<TextReceivedEventArgs>? TextReceivedEvent
// [2] 텍스트 수신 이벤트 발생 메서드
public void OnRaiseTextReceivedEvent(TextReceivedEventArgs e)
{
    // [3] 이벤트 발생
    TextReceivedEvent?.Invoke(this, e);
}

 

이벤트 실행 구현

더보기
// [이벤트 발생 시 전달할 데이터 생성]
string clientInfo = client.Client.RemoteEndPoint?.ToString() ?? "Unknown";
CustomEventArgs eventArgs = new CustomEventArgs(clientInfo);
// [이벤트 발생 메서드 호출]
OnRaiseClientConnectedEvent(eventArgs);

 

폼에 적용하기

더보기
// 폼이 로드될 때 이벤트 핸들러를 등록합니다.
void HandleClientConnect(object? sender, CustomEventArgs e)
{
    //MessageBox.Show($"클라이언트가 접속했습니다. {e.NewClientInfo}");
    textBox2.AppendText($"클라이언트가 접속했습니다. " +
        $"{e.NewClientInfo}{System.Environment.NewLine}" );
}
// [텍스트 수신 이벤트 핸들러]
void HandleTextReceived(object? sender, TextReceivedEventArgs e)
{
    textBox2.AppendText(
        $"[{e.ClientInfo}] : {e.TextReceived}{System.Environment.NewLine}");
}
// [텍스트 수신 이벤트 핸들러 등록]
mServer.TextReceivedEvent += HandleTextReceived;


실행 테스트