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

Top comments (0)