2012-11-16 5 views
6

작업 및 일정 목록이 있습니다. 일일 Task1 - Daily 12 PM Task2 - 월요일, 수요일 - 오후 9시 일정에 따라 해고하고 싶습니다.C에서 작업 스케줄러 이벤트 청취

고유 한 컨텍스트 (작업 ID)를 사용하여 작업 스케줄러 또는 다른 스케줄러 타이머를 C#에 등록 할 수 있습니까? 그리고 콜백 (일부 이벤트)에서 컨텍스트에서 taskid를 가져올 수 있으며 taskid를 사용하면 작업을 트리거 할 수 있습니다.

기본적으로 전달 된 컨텍스트로 예약 된 시간이 만료되면 콜백해야합니다. 그리고 제 코드는 최선의 것을 알기 때문에 예정된 시간에 무엇을해야만하는지 알 수 있습니다.

답변

3

quartz.net을 사용해 보시지 않겠습니까? 이 스케줄러는 작업 ID와 스케줄링 컨텍스트를 지원합니다. 좋은 문서와 많은 예제가 있습니다.

다음은 작업 (일명 Job)의 예입니다. 실행 컨텍스트는 스케줄러에서 전송됩니다.

public class DumbJob : IJob 
{ 
    public DumbJob() { 
    } 

    public void Execute(JobExecutionContext context) 
    { 
     Console.WriteLine("DumbJob is executing."); 
    } 
} 

BTW 가비지 수집을 피하기 위해 정적 인 스케줄러를 만드는 것을 잊지 마십시오. 전에 이미이 문제를 만났습니다.

+0

조니에게 감사드립니다. 닷넷 라이브러리는 여기에 네이티브 지원을 제공하지 않습니다? – KrishnaSrihari

+0

타이머와 카운터처럼 몇 가지가 있지만 쿼츠처럼 융통성이 없으며 많은 단점이 있습니다. 처음 quatz.net을 만났을 때, 나는 그것을 사용하기 위해 모든 프로젝트를 리펙토링했습니다. 아직도 = 사용) –