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]–