2010-07-29 5 views
3

정기적 인 간격으로 실행되는 데이터베이스의 테이블에서 "처리되지 않은"항목을 확인하고 처리 한 다음 다시 씁니다 처리 된 데이터베이스에 저장합니다. 아마 매분마다 실행되도록 설정할 것입니다.Windows에서 일정한 간격으로 .NET 구성 요소를 실행하는 솔루션

코드가 주기적으로 실행되도록 Windows 서버 환경에서 구성 요소를 설정하려면 어떻게해야합니까?

답변

3

Windows 서비스에 System.Timers.Timer을 사용하십시오.

당신은 당신의 창 서비스 ONSTART 이벤트 (MSDN)에서 같은 코드를 가질 수 있습니다 : 그것은 또한 Windows Task Scheduler을 사용하는 것이 매일 실행하면 간격이 예를 들어 자주하지

// Hook up the Elapsed event for the timer. 
timer.Elapsed += new ElapsedEventHandler(OnTimedEvent); 

// Set the Interval to 2 seconds (2000 milliseconds). 
timer.Interval = 2000; 
timer.Enabled = true; 

........... 

// Specify what you want to happen when the Elapsed event is raised. 
private static void OnTimedEvent(object source, ElapsedEventArgs e) 
{ 
    ...... 
} 

합니다. 주어진 간격 동안 애플리케이션을 실행할 수 있습니다 (해당 간격이 이 아니고이 너무 빈번한 경우).

+0

아래로 투표 한 이유가 무엇입니까 ??? – Incognito

2

윈도우 작업 (시작 - 프로그램 - 보조 프로그램 - 시스템 도구) ... SSIS 작업 일정 ... 제 3 자 작업 소프트웨어 (Activebatch, 등) ...

3

Windows 작업을 통해 예약 된 작업을 만들기 예약 스케줄러. 예약 된 작업은 컴파일 된 .NET EXE (주기적으로 EXE라고 가정 함)를 실행합니다. 1 분 미만으로 실행해야하는 경우 Windows 서비스로 이동해야합니다.

예약 된 작업을 설정하는 방법은 nice tutorial입니다. 스크린 샷은 Windows XP에서 제공됩니다.

1

언제든지 해제 할 수있는 타이머를 사용하여 서비스로 설정하거나 (이 빈도는 아마도 최선의 선택) Windows 스케줄러에서 예약 된 작업을 설정할 수 있습니다. 당신은 Windows 서비스 경로로 갈 경우

, 당신의 시작() 메소드는 같은 것을 볼 것이다 : 당신은 타이머의 이벤트를 처리하는 이벤트 핸들러를해야합니다 그리고

Timer tmr = new Timer(60000, true) //this could be wrong: set it for one minute and turn on auto-reset. 

tmr.Start(); 

를 (기억이 안나요 이름은 지금 : 틱, 아마도?) 실제 코드를 호출합니다.

코드가 완료되는 데 1 분 이상 걸리면 자동 다시 시작을 false으로 설정 한 다음 처리 프로토 타입이 서비스를 다시 제어 할 때 타이머를 다시 사용하도록 설정할 수 있습니다.

관련 문제