Как остановить и удалить все фоновые задания обработки в Hangfire? - PullRequest
1 голос
/ 26 июня 2019

Я использую Hangfire в проекте AspNet Core для запуска некоторых фоновых заданий. Когда я перезагружаю свой сервер, новое фоновое задание ставится в очередь и обрабатывается, но все предыдущие фоновые задания непрерывно обрабатываются или перезапускаются. Я удалил все старые фоновые задания обработки из базы данных, но ничего не изменилось, это удаленное задание было удалено из базы данных, но все еще обрабатывается. Как мне остановить и удалить все фоновые задания обработки, которые не отражены в базе данных?

Ответы [ 2 ]

0 голосов
/ 23 июля 2019

Вы также можете удалить задания Hangfire с панели мониторинга Hangfire.

0 голосов
/ 26 июня 2019

Во-первых, вы должны использовать токены отмены . В своей работе передайте объект IJobCancellationToken в качестве аргумента вместе с другими аргументами:

public void MyJob( <<other args>>, IJobCancellationToken cancellationToken)
{
    for (var i = 0; i < Int32.MaxValue; i++)
    {
        cancellationToken.ThrowIfCancellationRequested();

        Thread.Sleep(TimeSpan.FromSeconds(1));
    }
}

Чтобы поставить в очередь свою работу, передайте IJobCancellationToken значение null:

string jobID = BackgroundJob.Enqueue(() => MyJob(<<other args>>, JobCancellationToken.Null));

Теперь, чтобы отменить и удалить работу, сделайте это с помощью кода:

BackgroundJob.Delete(jobID);
...