运行 Startup 中的重复作业
Running recurring job inside Startup
如果我有一份经常性工作,每天 运行 在 .net 核心应用程序中。为此,我正在考虑使用 Hangfire 库。
My question is: will placing this code for executing this daily job
here in the Configure method be the most logical place or you would
suggest something else?
public void Configure(IApplicationBuilder app, IBackgroundJobClient backgroundJobs, IHostingEnvironment env)
{
app.UseHangfireDashboard();
backgroundJobs.Enqueue(() => Console.WriteLine("Hello world from Hangfire!"));
...
}
Asp.net核心提供了一个IHostApplicationLifetime
,提供了在应用宿主完全启动、应用宿主正常关闭、应用宿主正在执行时触发的方法正常关机。
我想你可以把这个方法放在 IHostApplicationLifetime 的 ApplicationStarted 方法中。
更详细的使用方法,可以参考这个article。
在您编写代码时,它不会每天触发,除非您每天重新启动您的应用程序。
此外,如果您有多个应用程序实例,您将多次运行后台作业。
你需要写的应该是这样的:
RecurringJob.AddOrUpdate( "MyConsoleJobUniqueId",
() => Console.WriteLine("Hello world from Hangfire!"),
Cron.Daily );
正如@BrandoZhang 所说,这段代码最好放在 appLifetime.ApplicationStarted
事件处理程序中。
如果我有一份经常性工作,每天 运行 在 .net 核心应用程序中。为此,我正在考虑使用 Hangfire 库。
My question is: will placing this code for executing this daily job here in the Configure method be the most logical place or you would suggest something else?
public void Configure(IApplicationBuilder app, IBackgroundJobClient backgroundJobs, IHostingEnvironment env)
{
app.UseHangfireDashboard();
backgroundJobs.Enqueue(() => Console.WriteLine("Hello world from Hangfire!"));
...
}
Asp.net核心提供了一个IHostApplicationLifetime
,提供了在应用宿主完全启动、应用宿主正常关闭、应用宿主正在执行时触发的方法正常关机。
我想你可以把这个方法放在 IHostApplicationLifetime 的 ApplicationStarted 方法中。
更详细的使用方法,可以参考这个article。
在您编写代码时,它不会每天触发,除非您每天重新启动您的应用程序。 此外,如果您有多个应用程序实例,您将多次运行后台作业。
你需要写的应该是这样的:
RecurringJob.AddOrUpdate( "MyConsoleJobUniqueId",
() => Console.WriteLine("Hello world from Hangfire!"),
Cron.Daily );
正如@BrandoZhang 所说,这段代码最好放在 appLifetime.ApplicationStarted
事件处理程序中。