DEV Community

Juarez Júnior for Develop4Us

Posted on • Edited 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

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay