서버 기반 타이머 소개
업데이트: 2007년 11월
서버 기반 타이머를 사용하면 응용 프로그램에서 발생되는 이벤트의 반복 간격을 지정할 수 있습니다. 그런 다음 이 이벤트를 처리하여 정기적인 프로세싱을 제공할 수 있습니다. 예를 들어, 하루 24시간 연중무휴로 계속 실행되어야 하는 중요한 서버가 있다고 가정하면 타이머를 사용하여 이 서버를 주기적으로 검사하고 시스템의 지속적 실행을 보장하는 서비스를 만들 수 있습니다. 시스템이 응답하지 않을 경우 이 서비스는 서버를 다시 시작하거나 관리자에게 알릴 수 있습니다.
참고: |
---|
서버 타이머의 간격은 밀리초 단위로 지정됩니다. |
서버 타이머, Windows 타이머 및 스레드 타이머
Visual Studio 및 .NET Framework에는 다음 세 개의 타이머 컨트롤이 있습니다.
서버 기반 타이머 - 도구 상자에 추가할 수 있습니다.
Windows 기반 타이머 - 도구 상자에 항상 표시됩니다.
스레드 타이머 - 프로그래밍 방식으로 사용할 수 있습니다.
Windows 기반 타이머는 Windows Forms 응용 프로그램에서 사용하도록 최적화되어 있습니다. 서버 기반 타이머는 일반 타이머를 서버 환경에서 최적으로 실행되도록 업데이트한 것입니다. 스레드 타이머는 이벤트 대신 콜백 메서드를 사용하는 간단한 소형 타이머로서 스레드 풀 스레드에서 제공합니다.
Win32 아키텍처에는 UI 스레드와 작업자 스레드라는 두 종류의 스레드가 있습니다. UI 스레드는 대부분의 시간을 유휴 상태로 보내며 메시지 루프에 메시지가 도착할 때까지 기다립니다. 메시지가 도착하면 이 메시지를 처리하고 다음 메시지가 도착할 때까지 기다립니다. 이에 비해 작업자 스레드는 백그라운드 처리를 수행하는 데 사용하며 메시지 루프를 사용하지 않습니다. Windows 타이머와 서버 기반 타이머는 모두 Interval 속성을 사용하여 실행됩니다. 스레드 타이머의 간격은 Timer 생성자에서 설정됩니다. 스레드에서 타이머를 다루는 방식을 보면 알 수 있듯이 각 타이머의 용도는 서로 다릅니다.
Windows 타이머는 UI 스레드가 프로세싱을 수행하는 데 사용하는 단일 스레드 환경을 위해 설계되었습니다. Windows 타이머의 정확도는 55밀리초로 제한되어 있습니다. 이 일반 타이머는 사용자 코드에서 사용할 수 있는 UI 메시지 펌프가 필요하며 항상 동일한 스레드에서 실행되거나 다른 스레드로 마샬링됩니다. 이 기능은 COM 구성 요소의 성능을 저하시킵니다.
서버 기반 타이머는 다중 스레드 환경에서 작업자 스레드와 함께 사용하도록 설계되었습니다. 두 스레드는 서로 다른 아키텍처를 사용하므로 서버 기반 타이머가 Windows 타이머보다 정확합니다. 서버 타이머는 스레드 사이를 이동하면서 발생한 이벤트를 처리할 수 있습니다.
스레드 타이머는 메시지가 스레드에서 펌프되지 않는 경우에 유용합니다. 예를 들어, Windows 기반 타이머는 운영 체제의 타이머 지원 기능에 의존하며 스레드에서 메시지를 펌프하지 않을 경우에는 타이머 관련 이벤트가 발생하지 않습니다. 이 경우에는 스레드 타이머가 보다 더 유용합니다.
Windows 타이머는 System.Windows.Forms 네임스페이스에, 서버 타이머는 System.Timers 네임스페이스에 그리고 스레드 타이머는 System.Threading 네임스페이스에 있습니다.