2010-03-26 3 views
0

배경 - 내 MainForm 클래스 내에 동기화 기능이 있습니다. 사용자가 SYNC 버튼을 누르면 수동으로 호출됩니다. 스케줄러가 트리거 할 때도이 동기화 기능을 호출하기를 원합니다. 그래서 효과적으로 SchedulerJob : IJob.Execute() 메소드가이를 호출 할 수 있기를 원합니다.quartz.net - JobExecutionContext에 콜백 위임 메소드를 추가 할 수 없습니까?

질문들 - SchedulerJob : IJob.Execute() 메서드 내에서 MainForm.Sychronization() 메서드에 액세스하려면 어떻게합니까?

이 메서드에 대한 대리자를 MainForm 클래스에 만들고 jobDetail.JobDataMap을 통해 추가하려고했습니다. 그러나 시도 할 때 JobDataMap 대리자 형식을 끌어낼 수있는 메서드가 있는지 확실하지 ???

private void Schedule(MainForm.SyncDelegate _syncNow) 
{ 
    var jobDetail = new JobDetail("MainJob", null, typeof(SchedulerJob)); 
    jobDetail.JobDataMap["CallbackMethod"] = _syncNow; 

    // Trigger Setup 
    var trigger = new CronTrigger("MainTrigger"); 
    string expression = GetCronExpression(); 
    trigger.CronExpressionString = expression; 
    trigger.StartTimeUtc = DateTime.Now.ToUniversalTime(); 

    // Schedule Job & Trigger 
    _scheduler.ScheduleJob(jobDetail, trigger); 
} 


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

    public void Execute(JobExecutionContext context) 
    { 
     JobDataMap dataMap = context.JobDetail.JobDataMap; 
     MainForm.SyncDelegate CallbackFunction = dataMap.getDelegate["CallbackMethod"]; 
      **// THIS METHOD DOESN'T EXIST - getDelegate()** 
     CallbackFunction(); 

    } 
} 

PS.bump은 - 정말 여기 붙어 - 어떤 도움이

제시하는 또 다른 방법은 내 문제는 환영 : 내 작업이 주기적으로 메인 UI에 다시 전화 할 수있게하려면 (예 : MainForm의 진행률 막대에 표시되는) 진행 상황을 업데이트하려면 어떻게해야합니까? .NET backgroundworker 컨트롤 에는이 작업을 수행하는 방법이 있지만 어떻게 Quartz.net을 사용하여이 작업을 수행 할 수 있습니까?

답변

관련 문제