Asp.NetコアQuartzHostedService石英依存性注入(DI)を利用して実施しました

QuartzHostedServiceは、依存性注入nugetパッケージにクォーツAsp.Netコア・タスクに達成するために使用されます。

次のように基本的な例です。

使用してシステムを。
使用してSystem.Collections.Genericを。
使用してSystem.Linqのを。
使用してSystem.Threading.Tasksを。
使用してAspNetCoreSampleQuartzHostedService.Jobsを。
使用してMicrosoft.AspNetCore.Builderを。
使用してMicrosoft.AspNetCore.Hostingを。
使用してMicrosoft.AspNetCore.Mvcを。
使用してMicrosoft.Extensions.Configurationを。
使用してMicrosoft.Extensions.DependencyInjectionを。
使用してMicrosoft.Extensions.Loggingを。
使用してMicrosoft.Extensions.Optionsを。
使用してクォーツ。
使用してQuartzHostedServiceを。

名前空間AspNetCoreSampleQuartzHostedService 
{ 
    パブリック クラス起動
    { 
        公共スタートアップ(IConfiguration構成)
        { 
            設定 = 構成; 
        } 

        公共 IConfiguration設定{ 取得します} 

        // このメソッドはランタイムによって呼び出されます。コンテナにサービスを追加するには、このメソッドを使用します。
        公共 ボイドConfigureServices(IServiceCollectionサービス)
        { 
            services.AddMvc()SetCompatibilityVersion(CompatibilityVersion.Version_2_2)。
            services.AddOptions();
            services.Configure <のAppSettings>(構成); 
            services.Configure <InjectProperty>(オプションは=> {options.WriteTextは= " これは注入の文字列です" ;}); 
            services.AddQuartzHostedService()
                    .AddQuartzJob <HelloJob> ()
                    .AddQuartzJob <InjectSampleJob> ()
                    .AddQuartzJob <HelloJobSingle> ()
                    .AddQuartzJob <InjectSampleJobSingle> (); 
        } 

        // このメソッドはランタイムによって呼び出されます。HTTPリクエストパイプラインを設定するには、このメソッドを使用します。
        公共 無効設定(IApplicationBuilderアプリ、IHostingEnvironmentのENV、IOptions <のAppSettings> 設定)
        { 
            場合(env.IsDevelopment())
            { 
                app.UseDeveloperExceptionPage()。
            } 
            app.UseMvc()。
            もし(settings.Value.EnableHelloSingleJob)
            { 
                app.UseQuartzJob <HelloJobSingle>(TriggerBuilder.Create()。WithSimpleSchedule(X => x.WithIntervalInSeconds(1 ).RepeatForever()))
                .UseQuartzJob <InjectSampleJobSingle>(()=> 
                { 
                    返すTriggerBuilder.Createを()
                       .WithSimpleSchedule(X).RepeatForever())=> x.WithIntervalInSeconds(1 ).RepeatForever())。
                }); 
            } 
            であれば(settings.Value.EnableHelloJob)
            { 
                app.UseQuartzJob <HelloJob>(新しいリスト<TriggerBuilder> 
                { 
                    TriggerBuilder.Create()
                    .WithSimpleSchedule(X => x.WithIntervalInSeconds(1 ).RepeatForever())、
                    TriggerBuilder.Create( )
                    .WithSimpleSchedule(X => x.WithIntervalInSeconds(2 
                }); 

                app.UseQuartzJob<InjectSampleJob>(()=> 
                { 
                    VARの結果= 新しいリスト<TriggerBuilder> (); 
                    result.Add(TriggerBuilder.Create()
                        .WithSimpleSchedule(X => x.WithIntervalInSeconds(10 ).RepeatForever()));
                     戻り結果; 
                }); 
            } 
        } 

    } 
}

 

例拡張モード:

パブリック静的クラスModBusScheduler 
    { 
        公共の静的な無効AddQuartzJobsService(このIServiceCollectionサービス)
        { 
            services.AddQuartzHostedService()
                    .AddQuartzJob <よだれ>( "HAVC_Elev")
                    .AddQuartzJob <よだれ>( "照明"、 "照明")
                    .AddQuartzJobDetail(()= > JobBuilder.Create <よだれ>()WithIdentity( "メーター")ビルド())。。
                    .AddQuartzJobDetail(()=> JobBuilder.Create <よだれ>()WithIdentity( "PowerDis")ビルド())。
        } 

        パブリック静的ボイドUserQuartzJobsService(このIApplicationBuilderアプリ、 
                 TriggerBuilder.Create()戻り
                           .WithIdentity( "HAVC_Elev")
                           .UsingJobData( "MODBUS"、settings.AC_ElevatorSlave)
                           .UsingJobData( "DEVICETYPE"、 "HAVC_Elev")
                           (5).WithSimpleSchedule(X => x.WithIntervalInSecondsを.RepeatForever ())StartNow()。
             }); 
}

  

nuget接続   https://www.nuget.org/packages/QuartzHostedService/

githubのアドレスhttps://github.com/mukmyash/QuartzHostedService

 

おすすめ

転載: www.cnblogs.com/MysticBoy/p/11003030.html