Utilizando o Background Tasks no ASP.NET Core com Hosted Services
7/3/2024, às 8:33:30

O que são Background Tasks?

Background Tasks são tarefas que são executadas em segundo plano, sem a necessidade de interação direta com o usuário. Eles são úteis para várias operações como envio de e-mails, processamento de dados, integração com sistemas externos, entre outros.


Quando Usar Background Tasks?

Utilize Background Tasks para:

  1. Processamento de filas de mensagens.
  2. Tarefas de limpeza periódica.
  3. Integração com serviços externos.
  4. Envio de notificações.


Configurando Background Tasks em ASP.NET Core

Passo 1: Criar um Hosted Service

Um Hosted Service é uma classe que implementa a interface IHostedService. Vamos criar um Hosted Service para executar uma tarefa em segundo plano.

using Microsoft.Extensions.Hosting;
using System;
using System.Threading;
using System.Threading.Tasks;

public class BackgroundTaskService : IHostedService, IDisposable
{
private Timer _timer;

public Task StartAsync(CancellationToken cancellationToken)
{
_timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5));
return Task.CompletedTask;
}

private void DoWork(object state)
{
Console.WriteLine("Background task is running at: " + DateTime.Now);
}

public Task StopAsync(CancellationToken cancellationToken)
{
_timer?.Change(Timeout.Infinite, 0);
return Task.CompletedTask;
}

public void Dispose()
{
_timer?.Dispose();
}
}


Passo 2: Registrar o Hosted Service no Startup.cs

No arquivo Startup.cs, registre o Hosted Service na coleção de serviços.

public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddHostedService<BackgroundTaskService>();
}


Passo 3: Executar Tarefas Periódicas

O exemplo acima demonstra a execução de uma tarefa periódica a cada 5 segundos. Você pode ajustar o intervalo conforme necessário para sua aplicação.

Passo 4: Utilizar BackgroundService

Para simplificar a criação de serviços de background, o .NET Core fornece a classe BackgroundService, que já implementa a interface IHostedService. Vamos ver como utilizá-la.

using Microsoft.Extensions.Hosting;
using System;
using System.Threading;
using System.Threading.Tasks;

public class TimedHostedService : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
Console.WriteLine("Timed background task is running at: " + DateTime.Now);
await Task.Delay(5000, stoppingToken);
}
}
}


Passo 5: Registrar o BackgroundService

No arquivo Startup.cs, registre o BackgroundService.

public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddHostedService<TimedHostedService>();
}


Conclusão

Background Tasks são essenciais para muitas aplicações modernas, permitindo a execução de tarefas em segundo plano de maneira eficiente e escalável. O ASP.NET Core fornece uma maneira simples e poderosa de implementar e gerenciar essas tarefas usando Hosted Services.


VOCÊ PODE GOSTAR

^

voltar para o top