DEV Community

Juarez Júnior
Juarez Júnior

Posted on

Agendamento de Tarefas em Segundo Plano com Hangfire

O Hangfire é uma biblioteca para .NET que facilita a execução de tarefas em segundo plano e o agendamento de jobs. Ele permite que você agende tarefas recorrentes ou execute operações longas fora do fluxo principal da aplicação, sem a necessidade de escrever código complexo para gerenciar threads ou processos. Neste exemplo, veremos como configurar o Hangfire para executar uma tarefa em segundo plano e agendar uma tarefa recorrente.

Bibliotecas:

Para usar a biblioteca Hangfire, instale o seguinte pacote NuGet no seu projeto:

Install-Package Hangfire
Install-Package Hangfire.MemoryStorage
Enter fullscreen mode Exit fullscreen mode

Código de Exemplo:

using Hangfire;
using Hangfire.MemoryStorage;
using System;
using System.Threading.Tasks;

class Program
{
    static void Main(string[] args)
    {
        // Configurando Hangfire com armazenamento em memória
        GlobalConfiguration.Configuration.UseMemoryStorage();

        using (var server = new BackgroundJobServer())
        {
            // Agendando um job para execução imediata
            BackgroundJob.Enqueue(() => TarefaEmSegundoPlano());

            // Agendando um job recorrente (executado a cada minuto)
            RecurringJob.AddOrUpdate("tarefa-recorrente", () => TarefaRecorrente(), Cron.Minutely);

            Console.WriteLine("Jobs agendados. Pressione Enter para sair...");
            Console.ReadLine();
        }
    }

    // Tarefa que será executada em segundo plano
    public static void TarefaEmSegundoPlano()
    {
        Console.WriteLine("Tarefa em segundo plano executada.");
    }

    // Tarefa recorrente
    public static void TarefaRecorrente()
    {
        Console.WriteLine("Tarefa recorrente executada.");
    }
}
Enter fullscreen mode Exit fullscreen mode

Explicação do Código:

Neste exemplo, configuramos o Hangfire para usar o armazenamento em memória (através do pacote Hangfire.MemoryStorage) e inicializamos o servidor de jobs em segundo plano. Usamos o método BackgroundJob.Enqueue para agendar a execução imediata de uma tarefa chamada TarefaEmSegundoPlano. Além disso, usamos RecurringJob.AddOrUpdate para agendar uma tarefa recorrente (TarefaRecorrente), que será executada a cada minuto. O código fica em um loop aguardando o usuário pressionar Enter para encerrar a aplicação.

Conclusão:

O Hangfire é uma solução simples e poderosa para gerenciar tarefas em segundo plano e agendadas em aplicações .NET. Ele abstrai a complexidade de trabalhar diretamente com threads ou timers, oferecendo uma API fácil de usar para agendar jobs de maneira eficiente.

Código fonte: GitHub

Top comments (0)