c# 스레드 타이머 예제

지정된 간격으로 스레드 풀 스레드에서 메서드를 실행 하기 위한 메커니즘을 제공 합니다. 이 클래스는 상속할 수 없습니다. System.Threading 네임스페이스의 타이머 클래스는 별도의 스레드에서 작업을 주기적으로 실행하는 데 효과적입니다. 지정된 간격으로 메서드를 실행하는 방법을 제공합니다. 이 클래스는 상속할 수 없습니다. 시스템 사용; System.Windows.Forms 사용 System.스레딩 사용; 네임스페이스 nsDelegates { 공용 클래스 ThrdTime { 정적 int 카운트다운 = 10; 정적 System.Threading.Timer 타이머; 정적 공용 보이드 Main() { // 타이머 콜백 대리자 생성. System.Threading.TimerCallback cb = 새로운 System.Ssing.TimerCallback (프로세스 타이머이벤트); 타이머에 대한 개체를 만듭니다. clsTime 시간 = 새 clsTime (); 타이머를 만듭니다. 자동 시작이므로 타이머를 생성하면 시작됩니다. 타이머 = 새 System.Threading.Timer (cb, 시간, 4000, 1000); 기다리는 자들도 복이 있습니다. MessageBox.Show(“카운트다운 대기”, “텍스트”); } // 타이머에 대한 콜백 메서드입니다. 유일한 매개 변수는 타이머 개체를 만들 때 // ed 개체입니다.

개인 정적 보이드 ProcessTimerEvent (개체 obj) { –카운트 다운; // 카운트 다운이 완료되면, 프로그램을 종료합니다. 폐기 (); 환경.출구 (0); } 문자열 str = “”; obj 인수를 clsTime에 캐스팅합니다. 경우 (obj는 clsTime) { clsTime 시간 = (clsTime) obj; str = 시간. GetTimeString (); } str += “rn카운트다운 = ” + 카운트다운; MessageBox.Show(str, “타이머 스레드”); } } // 타이머의 개체 인수로 사용할 클래스를 정의합니다. 클래스 clsTime { 공개 문자열 GetTimeString () { 문자열 str = DateTime.Now.ToString (); int 인덱스 = str. 인덱스 오브(” “); 반환 (str. 하위 문자열 (인덱스 + 1)); } } } Dot Net 프레임워크는 세 가지 타이머를 지원합니다. 그들은 : 위의 타이머 콜백에서, 우리는 콘솔 출력 창에 두 개의 메시지를 인쇄하고 있습니다. 하나는 문자열 진드기입니다! 다른 하나는 콜백 함수가 실행 중인 스레드 ID입니다. 또한 Callback이 Sleep 이라는 함수를 사용하여 약 절반의 실행을 중지합니다. 타이머 개체를 만들 때 대리자 메서드의 첫 번째 호출(dueTime)과 후속 호출(기간) 사이의 대기 시간을 평가해야 합니다.

타이머는 기한 이경과시 메서드를 호출하고 그 후 기간당 한 번씩 메서드를 호출합니다. 타이머 클래스의 변경 메서드를 사용하여 이러한 값을 변경하거나 타이머를 사용하지 않도록 설정할 수 있습니다. 타이머 클래스의 Dispose 메서드를 사용하여 타이머가 더 이상 필요하지 않은 경우 리소스를 해제할 수 있습니다. 타이머는 항상 스레드 풀 스레드에서 발생합니다. UI를 업데이트하는 데 사용해야 하는 경우 Windows Forms 섹션에서 언급한 기술을 사용해야 합니다. 당신은 시작하고 중지하지 않습니다 – 당신이 그것을 발사하지 않으려면, 그냥 무한할 기한시간을 변경합니다. dueTime이 0이면 타이머 생성 시간에 지정된 대리자는 다음 호출을 즉시 수행합니다. dueTime이 System.Threading.Timeout.Infinite인 경우 메서드 호출이 발생하지 않습니다. 타이머는 비활성화되어 있지만 이 메서드를 호출하고 dueTime 에 대해 음수가 아닌 값을 지정하여 다시 사용할 수 있습니다. MSDN: 이는 “타이머가 지정된 간격이 경과할 때마다 경과된 이벤트를 발생시켜야 하는지 또는 처음 경과한 후에만 경과해야 하는지 여부”를 나타냅니다.

즉, 되풀이 타이머를 원하는 경우 true로 둡니다. 타이머는 대부분의 경우 예제가 필요하지 않을 정도로 간단합니다. 그냥 킥에 대 한, 여기의 샘플System.Threading.Timer. 당신이 정말로 다른 예제가 필요한 경우, 저를 우편으로 알려주시고 당신이 원하는 정확히 무엇인지 알려주십시오. 리소스 섹션의 문서에는 일부 샘플 코드도 있습니다. 기본적으로 이벤트는 스레드 풀 스레드에서 발생합니다. 그러나 특정 스레드에서 발생 하려면 경우 SynchronizingObject 속성을 사용할 수 있습니다.이 속성을 사용 하 여 이벤트를 호출 하 고 동기화 개체가 원하는 대로 합니다.