我编写了一个简单的控制台应用程序,该应用程序应每分钟打印一条消息。我确实收到第一条显示“正在启动”的打印消息,但是我没有在PrintTest()
我控制台中的方法。这是什么原因呢?顺便说一下,这是一个.net核心控制台应用程序。
class Program
{
static void Main(string[] args) {
Console.WriteLine("Starting");
GlobalConfiguration
.Configuration
.UseSqlServerStorage(@"Server=127.0.0.1,1433; Database=HFTest; User Id=sa; Password=Password123");
RecurringJob.AddOrUpdate((() => PrintTest()), Cron.Minutely());
Console.ReadKey();
}
public static void PrintTest()
{
Console.WriteLine("Hangfire Server started. Press any key to exit...");
}
}
您需要使用BackgroundJobServer
块创建一个using
,并将您的RecurringJob放入其中:
static void Main(string[] args)
{
Console.WriteLine("Starting");
GlobalConfiguration
.Configuration
.UseColouredConsoleLogProvider()
.UseSqlServerStorage(@"Server=127.0.0.1,1433; Database=HFTest; User Id=sa; Password=Password123");
using (var server = new BackgroundJobServer())
{
RecurringJob.AddOrUpdate(() => PrintTest(), Cron.Minutely());
Console.ReadKey();
}
}
参考https://docs.hangfire.io/en/latest/background-processing/processing-jobs-in-console-app.html