DEV Community

Juarez Júnior for Develop4Us

Posted on • Edited on

Agendamento de Tarefas com Quartz.NET

O Quartz.NET é uma biblioteca open-source que facilita o agendamento de tarefas (jobs) em aplicações .NET. Ela é robusta e oferece diversas funcionalidades para agendamento, como tarefas recorrentes, execução baseada em cron expressions e muito mais. O Quartz.NET é amplamente utilizado em aplicações empresariais para agendar e automatizar tarefas de manutenção ou processamento em segundo plano. Neste exemplo, vamos configurar o Quartz.NET para agendar e executar uma tarefa recorrente usando cron expression.

Bibliotecas:

Para usar a biblioteca Quartz.NET, instale o seguinte pacote NuGet no seu projeto:

Install-Package Quartz
Enter fullscreen mode Exit fullscreen mode

Código de Exemplo:

using Quartz;
using Quartz.Impl;
using System;
using System.Threading.Tasks;

public class TarefaExemplo : IJob
{
    public Task Execute(IJobExecutionContext context)
    {
        Console.WriteLine($"Tarefa executada em: {DateTime.Now}");
        return Task.CompletedTask;
    }
}

class Program
{
    static async Task Main(string[] args)
    {
        // Criando um agendador de tarefas
        IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler();
        await scheduler.Start();

        // Definindo a tarefa que será agendada
        IJobDetail job = JobBuilder.Create<TarefaExemplo>()
            .WithIdentity("tarefaExemplo", "grupo1")
            .Build();

        // Criando um cron trigger para execução a cada minuto
        ITrigger trigger = TriggerBuilder.Create()
            .WithIdentity("triggerExemplo", "grupo1")
            .StartNow()
            .WithCronSchedule("0 * * ? * *") // Executa todo minuto
            .Build();

        // Agendando a tarefa
        await scheduler.ScheduleJob(job, trigger);

        Console.WriteLine("Tarefa agendada. Pressione Enter para sair...");
        Console.ReadLine();

        await scheduler.Shutdown();
    }
}
Enter fullscreen mode Exit fullscreen mode

Explicação do Código:

Neste exemplo, usamos o Quartz.NET para criar um agendador de tarefas que executa um job chamado TarefaExemplo. A classe TarefaExemplo implementa a interface IJob, que contém o método Execute, onde a lógica da tarefa é definida. A tarefa imprime a data e hora de execução no console. O agendamento da tarefa é feito através de um cron trigger, que foi configurado para executar a tarefa a cada minuto usando a cron expression "0 * * ? * *". O agendador começa a executar a tarefa imediatamente e continuará a fazê-lo a cada minuto até que o programa seja encerrado.

Conclusão:

O Quartz.NET é uma biblioteca poderosa e flexível para agendamento de tarefas em aplicações .NET. Ele suporta cron expressions, execução de múltiplos jobs e diversos tipos de triggers, o que o torna uma solução robusta para automação de tarefas em segundo plano. É amplamente usado para cenários complexos de agendamento em sistemas empresariais.

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)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

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

Okay