Window Application 타 Server로부터 Push Message를 받기 위해 Socket Class library를 작성중이다.
예전에 nsoftware사의 DotNetFramework 기반의 상용 모듈을 사용한 경험이 있어 비슷하게 구현할 생각인데
Socket Client/Server Module을 Class Library로 작성해 Recv된 데이터는 delegate를 이용해 받을 대상
원도우로 전달할 생각이다.
우선 Class Library에 MainWindow에 전달할 delegate event 생성한다.
...
#region Event Delegates
public delegate void OnCurTimeEventHandler(object sender, EvtArgs e);
#endregion
public class BkgrndTimer
{
#region 속성
DispatcherTimer objTicker = new DispatcherTimer();
#endregion
#region 이벤트
public event OnCurTimeEventHandler OnCurTimeEvent;
#endregion
public void BeginTicker()
{
objTicker.Interval = TimeSpan.FromSeconds(1);
objTicker.Tick += new EventHandler(OnTimeTick_EventHandler);
objTicker.Start();
}
public void EndTicker()
{
objTicker.Stop();
objTicker.IsEnabled = false;
}
private void OnTimeTick_EventHandler(object sender, EventArgs e)
{
objTicker.Stop();
string sCurTime = string.Format("{0:0000}-{1:00}-{2:00} {3:00}:{4:00}:{5:00}",
DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day,
DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);
OnCurTimeEvent(this, new EvtArgs(sCurTime));
objTicker.Start();
}
}
public class EvtArgs
{
public string sCURTIME;
public EvtArgs(string sCurTime)
{
sCURTIME = sCurTime;
}
}
생성된 delegate event는 MainWindow에서 아래와 같이 받았다.
public partial class MainForm : Form
{
#region 속성
private BkgrndTimer.BkgrndTimer objBkgrndTimer = new BkgrndTimer.BkgrndTimer();
#endregion
public MainForm()
{
InitializeComponent();
}
private void MainForm_Load(object sender, EventArgs e)
{
objBkgrndTimer.OnCurTimeEvent += new BkgrndTimer.OnCurTimeEventHandler(OnBkgrndEvent_Handler);
objBkgrndTimer.BeginTicker();
}
private void OnBkgrndEvent_Handler(object sender, BkgrndTimer.EvtArgs e)
{
this.lbCurTime.Text = e.sCURTIME;
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
objBkgrndTimer.OnCurTimeEvent -= new BkgrndTimer.OnCurTimeEventHandler(OnBkgrndEvent_Handler);
}
}
예제는 Class Library에서 DispatcherTimer를 이용한 현재 시간을 MainWindow에 전달한 것이지만 이 개념을 바탕으로
작성했다. 다시 작업 시작...
'개발언어 > .NET' 카테고리의 다른 글
C# 폴더에 특정 확장자 파일 검색, 파일 확장자 변경 (0) | 2020.09.26 |
---|---|
Windows10 시작프로그램 삭제 (0) | 2020.08.08 |
"MSDTC를 사용할 수 없습니다." 오류 처리 (0) | 2019.12.21 |
타 Application의 App.Config AppSetting의 지정값 가져오기 (0) | 2019.12.10 |
C# ini 파일 읽기/쓰기 클래스 (0) | 2019.12.07 |