C# 델리게이트를 이용한 이벤트 생성 (Part-2)
Software/C#2023. 2. 5. 00:22
반응형
이벤트 생성 part-2 에서는 MyTimer 클래스를 만들게 됩니다.
타이머에 시간(초단위)을 설정하고 시작을 누르면 해당시간이 지나면 이벤트를 발생시키는 예제 입니다. 타이머 클래스 내부에 Thread 를 이용하여 시간의 흐름을 감지하도록 코딩되어 있습니다.
public class MyTimer
{
public delegate void EventHandler(object sender, EventArgs e);
public event EventHandler? OnTimeoutHandler = null;
public int time {set; get;} // Unit is sec
public MyTimer(int time)
{
this.time = time;
}
public void start()
{
Thread myThread = new Thread(run);
myThread.Start(); // Thread 동작
}
private void run() // 타이머 동작 함수
{
var timeout = time;
while(true)
{
Thread.Sleep(1000);
if (--timeout <= 0) break;
}
if(OnTimeoutHandler is not null) OnTimeoutHandler(this, new EventArgs());
// 타이머 동작 완료가 되면 이벤트 함수를 호출합니다.
}
}
사용방법은 아래와 같습니다.
public partial class Form1 : Form
{
MyTimer myTimer = new MyTimer(10); // 10초 타이머 객체 생성
public Form1()
{
InitializeComponent();
myTimer.OnTimeoutHandler += timeout_event; // 이벤트 실행 함수 등록
}
private void timeout_event(object sender, EventArgs e)
{
MessageBox.Show("Timeout Message.."); // 타이머 종료시 메시지 출력
}
private void button1_Click(object sender, EventArgs e)
{
myTimer.start(); // 타이머 시작
}
}
반응형
'Software > C#' 카테고리의 다른 글
| C# Multi Thread를 이용한 다중 Client 접속 Server (1) | 2023.02.11 |
|---|---|
| C# 델리게이트를 이용한 이벤트 생성 (Part-3) (0) | 2023.02.06 |
| C# 델리게이트를 이용한 이벤트 생성 (Part-1) (0) | 2023.02.04 |
| C# Newton json 사용방법 (part - 2) (0) | 2023.01.27 |
| Contec 사의 GPIB 카드 (GP-IB(PCI)F) 제어를 위한 Class (C#) (0) | 2023.01.19 |
댓글()








