C# - Usando o agendador de tarefas


Hoje veremos como configurar um agendador de tarefas para executar uma tarefa periodicamente usando a linguagem C#.

Você já precisou criar e executar tarefas em segundo plano que devem ser executadas periodicamente ?

Na linguagem C# é fácil criar tarefas em segundo plano e agendá-las para serem executadas periodicamente, e, neste tutorial veremos como criar uma aplicação console que vai executar algumas tarefas, e, a seguir vamos agendar esta aplicação para ser executada usando um agendador de tarefas.

A título de exemplo vamos criar uma aplicação console que escreve em um arquivo texto e usaremos o agendador de tarefas para agendar essa tarefa.

O Agendador de tarefas é um componente do Windows que permite executar automaticamente tarefas em um computador escolhido. O Agendador de tarefas faz isso monitorando os critérios escolhidos (chamados de gatilhos) e, em seguida, executa as tarefas quando esses critérios são atendidos.

Você pode usar o Agendador de tarefas para executar tarefas como iniciar um aplicativo, enviar uma mensagem de email ou mostrar uma caixa de mensagem.

As tarefas podem ser agendadas para execução em resposta a esses eventos ou gatilhos.

  • Quando ocorre um evento específico do sistema;
  • Em um horário específico;
  • Em um horário específico em uma programação diária;
  • Em um horário específico em uma programação semanal;
  • Em um horário específico em uma programação mensal;
  • Em um horário específico em uma programação mensal do dia da semana;
  • Quando o computador entra em um estado ocioso;
  • Quando a tarefa está registrada;
  • Quando o sistema é inicializado;
  • Quando um usuário faz logon;
  • Quando uma sessão do Terminal Server muda de estado;

Vamos ao código...

recursos usados

  • Visual Basic 2019 Community Edition

Crie um projeto Console do tipo .NET Core chamado CShp_OperadorConversao;

A seguir vamos incluir no arquivo Program, no método Main o código que cria um arquivo texto e escreve um texto neste arquivo :

using System;
using System.IO;
namespace Cshp_AgendaTarefa
{
    class Program
    {
        static void Main(string[] args)
        {
            // Cria um array de string com linhas de texto
            string[] linhas = { "Macoratti.net", "Quase tudo para .NET", "2020" };
            // Define o caminho 
            string caminhoDocumento =
              Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            //gera um nome de arquivo aleatório
            string arquivoTexto = "Mac2020_" + Path.GetRandomFileName();
            // Escreve o array de string para o arquivo
            using (StreamWriter arquivoSaida = 
                new StreamWriter(Path.Combine(caminhoDocumento, arquivoTexto)))
            {
                foreach (string linha in linhas)
                    arquivoSaida.WriteLine(linha);
            }
        }
    }
}

Esta classe vai criar um arquivo iniciando com o nome Mac2020_ seguido de um nome aleatório com o texto definido no array linhas.

Agora vamos agendar essa tarefa.

Configurando o Agendador de tarefas

A primeira coisa a fazer é abrir o componente Agendador de Tarefas do Windows.

Existem muitas formas de fazer isso, e, uma delas e acessar o Painel de Controle e, em Ferramentas Administrativas, clique em Agendar Tarefas.

Na janela do Agendador de Tarefas podemos iniciar clicando em : Criar Tarefa Básica ou Criar Tarefa...

Vamos clicar no item Criar Tarefa...

Na janela a seguir informe o nome da tarefa e a seguir clique em OK;

Selecione a aba Disparadores e clique no botão Novo.

Na janela a seguir defina uma configuração para executar a tarefa conforme abaixo:

Clique em OK.

Depois clique na aba Ações e selecione a Ação, no nosso exemplo, Iniciar um programa e, clique no botão Procurar e selecione o arquivo .exe da aplicação que deseja executar:

Se desejar definir mais configurações você pode fazer isso nas abas Condições :

E também a guia Configurações:

Ao final teremos no agendador de tarefas a nossa tarefa agendada conforme abaixo:

Clicando sobre a tarefa que foi agendada teremos a apresentação da tarefa e sua configuração e informação sobre execução e periodicidade.

Após alguns minutos podemos abrir a pasta c:\users\user\documents e verificar os arquivos textos gerados a cada 5 minutos:

Graças ao agendador de tarefas...

"Porque todos (os cristãos) devemos comparecer ante o tribunal de Cristo, para que cada um receba segundo o que tiver feito por meio do corpo, ou bem, ou mal."
2 Coríntios 5:10

Referências:

  • Macoratti .net | Facebook

  • macoratti - YouTube

  • Criando um serviço do Windows - Macoratti

  • C# - Criando serviços para Windows com o TopShelf - Macoratti

  • C# - Tratando com serviços do Windows - Macoratti.net

  • Parando, Iniciando e Reiniciando os serviços do ... - Macoratti

  • C# - Usando o Serilog - Macoratti


José Carlos Macoratti