c# 스레드 타이머 예제

TimerCallback 대리자는 타이머 개체와 연결된 메서드를 지정하고 해당 상태를 처리합니다. dueTime 경과 후 메서드를 한 번 호출 하 고 Dispose 메서드가 호출 될 때까지 기간 당 한 번 메서드를 호출 계속 합니다. 시스템은 대리자와 연결된 메서드를 실행할 별도의 스레드를 자동으로 할당합니다. System.Threading.Timer 개체를 만들 때 콜백 메서드를 정의하는 TimerCallback 대리자, 콜백에 전달되는 선택적 상태 개체, 콜백의 첫 번째 호출 전에 지연할 시간 및 시간을 지정합니다. 콜백 호출 사이의 간격입니다. 보류 중인 타이머를 취소하려면 Timer.Dispose 메서드를 호출합니다. 기본적으로 이벤트는 스레드 풀 스레드에서 발생합니다. 그러나 특정 스레드에서 발생 하려면 경우 SynchronizingObject 속성을 사용할 수 있습니다.이 속성을 사용 하 여 이벤트를 호출 하 고 동기화 개체가 원하는 대로 합니다. 예를 들어 동기화 개체를 UI 컨트롤에 설정하면 해당 컨트롤의 UI 스레드에서 이벤트가 실행됩니다. 이전 타이머와 달리 이벤트는 효과적으로 큐에 대기됩니다 . .NET은 다중 스레드 환경에서 사용할 두 개의 타이머를 제공합니다: System.Threading.Timer는 콜백 메서드를 사용하고 스레드 풀 스레드에서 제공하는 간단하고 가벼운 타이머입니다.

사용자 인터페이스 스레드에서 콜백이 발생하지 않으므로 Windows Forms에서는 사용하지 않는 것이 좋습니다. System.Windows.Forms.Timer는 Windows 양식과 함께 사용하기에 더 나은 선택입니다. 서버 기반 타이머 기능의 경우 이벤트를 발생시키고 추가 기능이 있는 System.Timers.Timer를 사용하는 것이 좋습니다. 자세한 정보 및 예제는 System.스레딩.타이머를 참조하십시오. „타이머“는 주기적으로 특정 기능을 발생시키는 트리거입니다. 이 정규 간격은 제어 할 수 있으며 타이머 생성 중에 지정하거나 타이머를 만든 후 변경할 수 있습니다. 응용 프로그램 스레드는 타이머를 만들고 1초동안 기다린 다음 250밀리초마다 CheckStatus 콜백 메서드를 실행합니다. 그런 다음 응용 프로그램 스레드는 AutoResetEvent 개체가 신호될 때까지 차단합니다. CheckStatus 콜백 메서드가 maxCount 시간을 실행하면 AutoResetEvent.Set 메서드를 호출하여 AutoResetEvent 개체의 상태를 신호로 설정합니다.

이 경우 응용 프로그램 스레드는 Change(Int32, Int32) 메서드를 호출하여 콜백 메서드가 이제 반초마다 실행되도록 합니다. AutoResetEvent 개체가 신호될 때까지 다시 한 번 차단됩니다.