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.
Vamos ao código...
recursos usados
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:
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