TaskScheduler en C#

Filed Under (c#, edgarantonio) by Edgar on 27-02-2010

Tagged Under : , , , ,

En esta ocacion nos centraremos en una parte muy util para cualquier proyecto de software y son las Tareas Programadas, ya sea en sistemas de inventarios, u aplicaciones sencillas cabe la posibilidad que tengamos que agregar un modulo para realizar alguna tarea predeterminada en cierta hora, dia o mes.

Pues bien para optimizar nuestro tiempo utilizaremos una DLL llamada TaskScheduler la cual podemos descargar de aqui. Bien esta libreria cuenta con una serie de metodos que nos serviran para personalizar nuestra tarea programada.

Pues bien iniciamos descargandonos la DLL y guardandola en nuestra carpeta debug de nuestra aplicacion, ahora en nuestro IDE de C# un NewProject->Consola y agregamos la referencia a la DLL en el menu Project->Add Reference, ahora falta declararla en el codigo y de paso tambien agregamos System.Diagnostics para un metodo que mas adelante utilizaremos.

using TaskScheduler;
using System.Diagnostics;

Ahora procedemos a crear nuestro primero objeto el cual sera de tipo ScheduledTask con el cual podremos llamar ala funcion CreateTask que asu vez asignara el valor a otro objeto de tipo Task, tal como se mira en el ejemplo.

 //Objeto tipo ScheduledTask
ScheduledTasks obj =new ScheduledTasks();
 //Objeto Task hereda la tarea.
Task obj1 = obj.CreateTask("Tarea");

Donde “tarea” tan solo es el titulo de nuestra tarea una vez creado los objetos procedemos a asignarle que tarea necesitamos que haga, puede ser cualquier archivo asi que le insertamos la ruta completa del archivo, en esta ocasion yo deseo que me ejecute un TXT que tengo en el escritorio, para esto primero obtengo la direccion de mi escritorio y agrego el nombre del archivo, Aclaro que aqui ustedes pueden agregar la direccion donde se encuentre su aplicacion.

//Obtenemos la direccion del Desktop
 string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
//Asignamos la direccion del archivo que ejecutaremos
 objTask.ApplicationName = (path+"\\tarea.txt");

Ahora le asignamos el usuario y contraseña de quien ejecutara esta tarea.

//Asignamos permisos de la cuenta de Windows
 objTask.SetAccountInformation("USUARIO", "CONTRASEÑA");

Bien falta un ultimo paso que es cuando deseo que se ejecute esta tarea para esto la DLL nos ofrece el metodo Triggers donde podremos especificar ha que hora, el dia o mes en que deseamos que se ejecute, en esta ocacion solo le asignare una hora, pero ustedes pueden asignar un dia o mes en especifico.

//Hora en que se ejecutara
 objTask.Triggers.Add(new DailyTrigger(17,56));

Donde (17,56) el primer termino es la hora y el segundo los minutos, asi que yo le asigne la tarea a las 5:56pm. Bien solo falta afinar detalles tales como tiempo de ejecucion, creador y prioridad de la tarea.

//Tiempo de ejecution horas,minutos,segundos
 objTask.MaxRunTime = new TimeSpan(0,15,0);
 //Creador
 objTask.Creator = "Edgar Antonio";
 //Prioridad
 objTask.Priority = ProcessPriorityClass.Normal;
 //Guardamos
 objTask.Save();

Si codificamos bien una vez ejecutada la aplicacion podremos ir a nuestro panel de Tarea programadas, esto se encuentra en menu Inicio Programs->Accessories->SystemTools->ScheduledTask y ahi veremos nuestra tarea programada, este modulo llega a ser muy util cuando deseamos repetir modulos programados por el usuario en alguna aplicacion.

Finalmente nuestro codigo quedo asi:

/*---------------------------
 www.proyectmaker.com
 ---------------------------
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TaskScheduler;
using System.Diagnostics;
namespace pyTaskScheduler
{
 class Program
 {
 static void Main(string[] args)
 {   //Objeto tipo ScheduledTask
 ScheduledTasks objST=new ScheduledTasks();
 //Objeto Task hereda la tarea.
 Task objTask = objST.CreateTask("TestTarea");
 //Obtenemos la direccion del Desktop
 string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
 //Asignamos la direccion del archivo que ejecutaremos
 objTask.ApplicationName = (path+"\\tarea.txt");
 //Comentario de la Tarea
 objTask.Comment = "Ejecutamos TXT del escritorio";
 //Asignamos permisos
 objTask.SetAccountInformation("22", "hacktheplanetcolunga");
 //Hora en que se ejecutara
 objTask.Triggers.Add(new DailyTrigger(18,09));
 //Tiempo de ejecution horas,minutos,segundos
 objTask.MaxRunTime = new TimeSpan(0,15,0);
 //Creador
 objTask.Creator = "Edgar Antonio";
 //Prioridad
 objTask.Priority = ProcessPriorityClass.Normal;
 //Guardamos
 objTask.Save();
 }
 }
}

–[ Descargar]–

  • Share/Bookmark

Leave a Reply