Почему Hangfire не распечатывает сообщение в моем методе

Я написал простое консольное приложение, которое должно выводить сообщение каждую минуту. Я получаю первое печатное сообщение с надписью "запускается", однако я не получаю сообщение в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 ответ

Вам нужно создать BackgroundJobServer с using block и поместите в него свой 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

Другие вопросы по тегам