본문 바로가기

Programming/.NET

System.Timers.Timer vs System.Threading.Timer

반응형

 

singleton pattern을 적용한 class를 쓸지 그냥 static class를 쓸지 고민하는 것과 같이

비슷한 고민이 계속될때 결정을 내리는 나름의 판단의 기준을 만들어 놓는 것을 좋아한다.

(그 결정이 맞고 틀리고와는 별개로 나름의 기준이 있어야 결정을 하고 결정을 하는데 시간이 줄어들기 때문에)

 

마찬가지로 System.Timers.TimerSystem.Threading.Timer 중 어떤 Timer를 쓸지에 대한 나름의 기준을 세우기 위해 간단하게 리뷰를 해봤고 가장 깔끔한 답변과 보다 디테일하게 참고할만한 정리 자료를 찾았다.

 

(윈폼 프레임워크에서만 사용하는 System.Windows.Forms.Timer는 제외했다. 보다 일반적인 케이스를 고려하고 싶어서)

 

기본적으로 System.Timers.Timer는 Thread safe 하다. 애초에 MultiThread 환경을 고려하여 만들어진 Timer이기 때문이다. 

그에 반해 System.Threading.Timer는 Thread safe하지 않다.

ref : https://stackoverflow.com/questions/1416803/system-timers-timer-vs-system-threading-timer

 

그럼 그냥 Thread safe 한 System.Timers.Timer를 쓰면 되는 걸까?

그렇지는 않다. System.Threading.Timer는 보다 많은 기능을 제공한다. 

보다 자세한 차이는 아래 링크를 통해 확인할 수 있다.

ref : https://web.archive.org/web/20150329101415/https://msdn.microsoft.com/en-us/magazine/cc164015.aspx

 

정리하면 MultiThread 환경에선 System.Timers.Timer를 사용하고

MultiThread가 아닌 환경에선 조금 더 장점이 많은 System.Threading.Timer 사용을 지향하되 System.Timers.Timer를 사용해도 무방하다. 

반응형