본문 바로가기
C++ 200제/코딩 IT 정보

C# 타이머 스레드 Thread 일시정지 방법 (Timeout.Infinite)

by vicddory 2018. 6. 8.

C# 타이머 스레드 Thread 일시정지 방법 (Timeout.Infinite)


타이머 스레드의 Pause, Suspend 등을 이용할 수 있지만, 다시 시작했다가 멈췄다가 반복하는 코드 구현이 필요합니다. 그래서 간단하게 일시 정지하는 방법으로 무한 대기를 선택할 수 있어요.


C# 타이머 스레드 Thread 일시정지 방법


먼저, C# 타이머 스레드를 사용하려면 아래 코드를 추가합니다.


1
using System.Threading;
cs


그리고 System.Threading.Timer의 객체를 생성합니다.


1
2
3
private System.Threading.Timer timer_;
 
timer_ = new System.Threading.Timer(함수 이름);
cs


여기까진 다를 게 없는데, 중요한 Timer Thread 일시정지는 아래처럼 꾸며보세요.


1
2
3
timer_.Change(
    System.Threading.Timeout.Infinite, 
    System.Threading.Timeout.Infinite);
cs


C# 타이머 스레드의 Change 함수는 원래 구동 간격을 지정하는 함수입니다.


여기에 무한 대기를 의미하는 Timeout.Infinite를 인자로 넘기면 일시정지와 같은 무한대기 상태로 전환됩니다. Timeout.Infinite는 무한 대기 기간을 의미하는 Int32 형태의 매개 변수입니다.


Mutex, Monitor, EventWaitHandle, Semaphore 등을 이용해 일시정지를 구현할 수 있지만, 저는 이게 더 간편해서 애용하는 편입니다.


장단점은 있지만, 프로젝트 규모가 크지 않다면, 굳이 뮤텍스나 세마포어 등을 구현하지 말고, 무한대기로 전환하는 것을 추천합니다. 


C# 타이머 스레드 Thread 일시정지 방법 (Timeout.Infinite)

댓글