为什么Hangfire无法在我的方法中打印出消息

时间:2019-10-16 22:03:49

标签: asp.net-core scheduled-tasks backgroundworker hangfire hangfire-console

我编写了一个简单的控制台应用程序,该应用程序应每分钟打印一条消息。我确实收到第一条显示“正在启动”的打印消息,但是没有在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...");
    }
}

1 个答案:

答案 0 :(得分:1)

您需要使用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