2016-07-07 3 views
1

私はTopshelfとQuartz.netを初めて使用しています。C#Quartz.netスケジューラジョブはウィンドウサービスが実行されていても実行されません。

私はC#quartz.netとWindowsサービスとしてスケジューラジョブを実行したいと思います。私はWindowsサービスを作成し、スケジューラージョブを呼び出すために必要なセットアップをすべて行った。私は何のエラーも表示されず、ウィンドウサービスは正常に開始されます。しかし、私がスケジューラジョブにデバッグポイントを置くと、設定した時間に達しても実行されていません。

public class MyJob : IJob 
{ 
    private readonly ISomeService _service; 

    public ExportPrsLiveReportJob(ILogProvider logProvider, ISomeService service) 
    { 
     _service = service; 
    } 

    public async void Execute(IJobExecutionContext context) 
    { 
     var data = await _service.Get(); 
    } 
} 

Program.csの

internal class Program 
{ 
    private static readonly IUnityContainer Container = UnityConfig.GetConfiguredContainer(); 
    static void Main(string[] args) 
    { 
     HostFactory.Run(serviceConfig => 
     { 
      serviceConfig.Service<ISchedulerService>(serviceInstance => 
      { 
       serviceInstance.ConstructUsing(name => Container.Resolve<ISchedulerService>()); 
       serviceInstance.WhenStarted(execute => execute.Start()); 
       serviceInstance.WhenStopped(execute => execute.Stop()); 
      }); 
      serviceConfig.RunAsLocalSystem(); 
      serviceConfig.SetDescription("Scheduler"); 
      serviceConfig.SetDisplayName("Scheduler"); 
      serviceConfig.SetServiceName("Scheduler"); 

      serviceConfig.StartAutomatically(); 
     }); 
    } 
} 

ScheduleService.cs

public class SchedulerService : ISchedulerService 
{ 
    private readonly IScheduler _scheduler; 
    private readonly DateTimeOffset _startTime = new DateTimeOffset(new DateTime(2016, 05, 01, 08, 30, 00, DateTimeKind.Utc).ToLocalTime()); 
    public SchedulerService(IScheduler scheduler) 
    { 
     _scheduler = scheduler; 
    } 
    public void Start() 
    { 
     StartScheduledJobs(); 
    } 

    public void Stop() 
    { 
     _scheduler.Shutdown(true); 
    } 

    private void StartScheduledJobs() 
    { 
     try 
     { 
      SchedulePrsReportExportJob(); 
      _scheduler.Start(); 
     } 
     catch (Exception ex) 
     { 

     } 
    } 

    private void SchedulePrsReportExportJob() 
    { 
     var jobDetail = JobBuilder.Create<MyJob>() 
      .WithIdentity("job1", "group1") 
      .Build(); 

     var trigger = TriggerBuilder.Create() 
      .WithIdentity("trigger1", "group1") 
      //.WithSchedule(CronScheduleBuilder.CronSchedule("0 1 0 ? * *")) //minute past midnight everyday 
      //.StartAt(_startTime) 
      //.WithSchedule(CronScheduleBuilder.CronSchedule("0 0/5 * ? * *")) //minute past midnight everyday 
      .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(16, 18)) 
      .StartNow() 
      .Build(); 

     _scheduler.ScheduleJob(jobDetail, trigger); 
    } 
} 

仕事を誰も私を助けることができる私はここで間違って何をやっていますか?

ありがとうございました

+0

解決方法これまでに解決したことはありますか?私は同じ問題を抱えています。 – Remotec

+0

@RemotecUk、いいえ、私は解決策を得られませんでした。 –

答えて

0

私はこれに似た問題がありました。私は働いたテストプロジェクトと、うまくいかない実際のプロジェクトを持っていました。

問題は、サービス名の長さおよび/または名前のドットの使用に関連しているようです。と思われます。

私はこれを実証するためにQuatrzのソースコードに何も見つかりませんでした。私のローカルテストでは、稼働中のサービスと稼働していないサービスの唯一の違いはサービス名でした。

関連する問題