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
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.");
}
}
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