2017-03-08 5 views

답변

0

예약 라이브러리를 사용할 수 있습니다. CRON 트리거를 지원합니다. 그래서 당신은 같은 간단한 작업을 정의 할 수 있습니다 :

public class Sqljob : IJob 
{ 
    #region Constructors 

    public Sqljob() 
    {  
    } 

    #endregion 

    #region IJob members 

    public void Execute(IJobExecutionContext context) 
    { 
     // Perform your SQl work here 
    } 

    #endregion 
} 

을 그리고 인스턴스화 트리거와 함께 작업을 예약 할 수있는 스케줄러를 가지고 :

public class TaskScheduler : ITaskScheduler 
{ 
    #region Private fields 

    private readonly IScheduler _scheduler; 

    #endregion 

    #region Constructors 

    public TaskScheduler(IScheduler scheduler) 
    { 
     _scheduler = scheduler; 
    } 

    #endregion 

    #region ITaskScheduler members 

    public string Name 
    { 
     get { return this.GetType().Name; } 
    } 

    public void Run() 
    { 
     ScheduleSqlJob(); 

     _scheduler.Start(); 
    } 

    public void Stop() 
    { 
     if (_scheduler != null) _scheduler.Shutdown(true); 
    } 

    #endregion 

    #region Private methods 

    private void ScheduleSqlJob() 
    { 
     var jobDetails = JobBuilder.Create<Sqljob>() 
            .WithIdentity("Sqljob") 
            .Build(); 
     var trigger = TriggerBuilder.Create() 
            .StartNow() 
            .WithCronSchedule("// Get your CRON expression here")) 
            .Build(); 
     _scheduler.ScheduleJob(jobDetails, trigger); 
    }  

    #endregion 
} 

그리고 서비스 같은 스케줄러 호출 할 수 있습니다

public partial class MyService : ServiceBase 
{ 
    #region Fields 

    private readonly ITaskScheduler _taskScheduler; 

    #endregion 

    public MyService(ITaskScheduler taskScheduler) 
    { 
     InitializeComponent(); 
     _taskScheduler = taskScheduler; 
    } 

    protected override void OnStart(string[] args) 
    { 
     _taskScheduler.Run(); 
    } 

    protected override void OnStop() 
    { 
     _taskScheduler.Stop(); 
    } 
}