2009-12-15 6 views
3

은 내가 한 처리가 5 분 이상을 실행하는 경우 체크하는 타이머를 만들 별도의 스레드에서 타이머를 실행하는 방법은 무엇입니까?

for(int i = 0; i < 10; i++) 
{ 
    // some long time processing 
} 

이하와 같은 루프가 있습니다. 한 프로세스가 5 분 이상 실행되면 현재 처리를 중지하고 다른 처리를 시작합니다.

메인 루프를 모니터링 할 다른 스레드를 만들 수 있습니까?

내 프로그램은 콘솔 응용 프로그램입니다.

답변

1

당신은 당신이 백그라운드 스레드에서 실행됩니다 System.Threading.Timer 사용할 수 있습니다 제이미의 asnwer에 또한 System.Timers.Timer

+0

실제로는 System.Timers.timer 및이 System.Threading.Timer –

+0

입니다 -drop) 버전의 System.Threading.Timer - http://mark.michaelis.net/Blog/SystemWindowsFormsTimerVsSystemThreadingTimerVsSystemTimersTimer.aspx –

+0

@ 알렉스, 고정 (15chars) – Fredou

2

를 사용해야합니다.

0

그러나 실제로 실행중인 코드를 중단 할 수는 없습니다. 코드 자체는 타이머가 특정 시간 후에 호출 할 수있는 자체를 취소 할 수있는 기능을 제공해야합니다.

예를 들어, 루프의 반복마다 (또는 여러 번) 체크인 할 때 "shouldCancel"이라는 부울을 사용할 수 있습니다.

"나쁜"방법은 Thread.Abort를 사용하는 것이지만, 이것은 실제로 좋은 스타일이 아닙니다.

관련 문제