QuartzNet在blazor-winform的使用

通过构造函数获取ISchedulerFactory   
 private async void InitJob()
 {

     var _scheduler = await _schedulerFactory.GetScheduler();
     _scheduler.JobFactory = new QuartzJobFactory(_serviceProvider); ;// await factory.GetScheduler();

     IJobDetail job = JobBuilder.Create<QuartzJobServer>()//
             .WithIdentity("job1", "group1")
             .Build();

     ITrigger trigger = TriggerBuilder.Create()
             .WithIdentity("trigger1", "group1")
             //.WithSimpleSchedule(x => x.WithIntervalInSeconds(10).RepeatForever())
              .WithCronSchedule(coravelConfig.CustomCorn!)
             .Build();

     await _scheduler.ScheduleJob(job, trigger);
     await _scheduler.Start();


 }

  

public class QuartzJobFactory : IJobFactory
{
    private readonly IServiceProvider _serviceProvider;

    public QuartzJobFactory(IServiceProvider serviceProvider)
    {
        _serviceProvider = serviceProvider;
    }

    public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
    {
        return _serviceProvider.GetService<QuartzJobServer>()!;
    }

    public void ReturnJob(IJob job)
    {
        var disposable = job as IDisposable;
        disposable?.Dispose();
    }
    //public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
    //{
    //    throw new NotImplementedException();
    //}

    //public void ReturnJob(IJob job)
    //{
    //    throw new NotImplementedException();
    //}
}

  

public class QuartzJobServer : IJob
{
    private readonly ISynchronousService _synchronousService;
    public QuartzJobServer(
         ISynchronousService synchronousService
        // IServiceScopeFactory serviceScopeFactory
        )
    {
        _synchronousService = synchronousService;// serviceScopeFactory.CreateScope().ServiceProvider.GetService<ISynchronousService>()!;// synchronousService;
    }

    public async Task Execute(IJobExecutionContext context)
    {
        await _synchronousService.GetPayData(DateTime.Now.ToString("yyyyMMdd"), TypeEnum.New);
        
        await Task.CompletedTask;
    }


}

  

   services.AddScoped<MainFrom>();
   services.AddWindowsFormsBlazorWebView();
   services.AddMasaBlazor();
   services.AddScoped<QuartzJobServer>();
   services.AddScoped<ISynchronousService, SynchronousService>();
 
   services.AddLogging(x => x.AddNLog());
   services.AddQuartz();
   services.AddSignalR();
   services.AddQuartzHostedService(x => x.WaitForJobsToComplete = true);
   services.AddSingleton<IConfiguration>(configBuild);
   var config = configBuild.GetSection("CustomParameter").Get<CoravelConfig>();
   var dbConfig = configBuild.GetSection("ConnectionStrings").Get<DbConfig>();
   services.Configure<CoravelConfig>(x => x.CustomCorn = config!.CustomCorn);
   services.Configure<DbConfig>(x => x.ConnString = dbConfig!.ConnString);
   return services.BuildServiceProvider();
//这里有些是我自己的,用的blazor-winform,自己看着删除

  

   
最后添加启动
var serviceProvider = services.InitDI(configBuild);
   Application.Run(serviceProvider.GetRequiredService<MainFrom>());
           

  

posted @ 2023-09-10 17:10  孤海飞雁  阅读(139)  评论(0编辑  收藏  举报