2012-12-10 6 views
0

매주 월요일마다 활성화되는 기능을 구현하기 위해 반복적 인 기능을 구현하고 싶습니다.되풀이 기능을 구현하는 방법은 무엇입니까?

서버에서 계속 실행되는 Window Forms 응용 프로그램에서 프로그래밍 방식으로이 작업을 수행하는 방법은 무엇입니까?

지연에 익숙하지만 1 주일 또는 1 개월 동안 지연이 적용되지 않았습니다. 이 응용 프로그램은 이미 어쨌든 실행중인 경우

+3

Windows 작업을 예약 하시겠습니까? –

+0

더 자세한 정보가 필요 하겠지만 기능을 수행하는 항목을 작성한 다음 사양에 따라 Windows 작업 스케줄러로 실행되도록 예약 할 수 있습니다. – turbo

+3

서버에서 winforms 앱을 사용하지 마십시오. 서비스 또는 예정된 배치를 사용하십시오. 그런 식으로 로그인 할 필요가 없습니다. –

답변

3

당신의 가장 좋은 방법은 콘솔 응용 프로그램에서이 기능을 작성하고 예약 된 작업을 사용하여 서버에 작업을 생성 (또는 SQL 스케줄러, 또는 당신의 마음에 드는 일정 도구) 어떤 간격으로 그것을 실행하는 당신 필요한 것.

특정 시간에 실행되는 코드에 "숨겨진"작업이있는 것을보고 싶지 않습니다. 알림없이 실패 할 기회가 너무 많습니다.

예약 도구를 사용하면 소스 코드를 건드리지 않고도 일정을 보거나 변경할 수 있습니다.

참고로 Windows Forms 앱은 서버이 아니라 클라이언트에서 실행되어야합니다.

1

은, 내가 무엇을 할 것 여기에 논리를 입증하기 psudocode의 당신이 당신의 주간 작업

을 할 것인지 여부를 확인하는주기적인 작업을해야합니다. 제 생각에는

if(today is Monday && i didn't do this task yet today) 
{ 
    //do monday stuff 
} 
+0

이것은 아마도 작동 할 것이지만 월요일에 한 번만 (한 번) 실행되지만 24/7을 실행해야한다고 요구하지 않습니까? 너무 많은 오버 헤드/방이 눈에 띄지 않게 보입니다. – turbo

+0

@turbo, 잘 op는 서버에서 연속적으로 실행되는 Window Forms 응용 프로그램에서 해결책을 요구했습니다 " –

+0

아, 맞습니다. 저의 실수입니다. – turbo

0

이상적으로 Windows 예약 된 작업에서이 작업을 수행해야합니다. 그런 다음 재발뿐만 아니라 타이밍도 관리합니다.

winforms 응용 프로그램을 통해이 작업을 수행해야하는 경우 주기적 시간 폴링 또는 대기/절전 차단의 두 가지 옵션이 있습니다.

주기적 시간 폴링을 사용하면 응용 프로그램을 실행해야하는 시간 간격을 설정할 수 있습니다. 그런 다음 루프에서이 기간이 경과했는지 확인하고 조치를 취하십시오. 루프 측면에서 필요한 정확도 수준을 설정할 수 있습니다.

블로킹 대기 상태에서 실행 스레드가 실행될 때까지 잠자기 상태가됩니다. 이 접근법의 유일한 문제점은 서버가 다시 시작되면 응용 프로그램이 이어야합니다.은 상태를 되찾고 모든 절전 작업을 재개해야합니다. 이 접근법의 정확성은 서버의 시간 이동에 따라 몇 초 내에 있어야합니다.

관련 문제