C#操作計划任務


    昨天有一個任務,就是要下載相關文件,然后保存在相關路徑下,這個沒什么難度,所以就略過不談,主要談談定時下載,即每天某個固定時間執行下載,這個功能我是用C#代碼來操作windows自帶的任務計划來實現的,所以我簡單的寫了一個任務計划操作類,以下是代碼主體部分,基本上可實現我需要的功能,當然,因為時間倉促,還不是很完善,我會盡量抽時間完善這個公共類,以便以后操作的時候,可以直接使用,廢話說完,開始進入正題:

1,首先下載TaskScheduler.dll,然后將其添加到引用中。

2,然后下面是TaskSchedulerHandler.cs的代碼,也就是滿足我的需要的操作類

 

[csharp]  view plain  copy
 
  1. /// <summary>  
  2. /// @Date:12/10/2012  
  3. /// @Author:Andy  
  4. /// @Desciption:class of add,delete and select Task Scheduler  
  5. /// </summary>  
  6. public class TaskSchedulerHandler  
  7. {  
  8.     public string hour;//task hour  
  9.     public string minute;//task minute  
  10.     public string interval;//task interval  
  11.     public string taskName;//Name of Task  
  12.     public string userName;//user to authorize the task  
  13.     public string userPwd;//password of user  
  14.   
  15.     public TaskSchedulerHandler()  
  16.     {  
  17.         InitVariables();  
  18.     }  
  19.   
  20.     /// <summary>  
  21.     /// Add Task to TaskScheduler  
  22.     /// </summary>  
  23.     public void AddTask()  
  24.     {  
  25.         if (!SelTask())  
  26.         {  
  27.             ScheduledTasks st = new ScheduledTasks();  
  28.             Task autoDownload = st.CreateTask(taskName);  
  29.             DailyTrigger dayTrigger = new DailyTrigger(Convert.ToInt16(hour), Convert.ToInt16(minute), Convert.ToInt16(interval));//get default config from app.config  
  30.   
  31.             autoDownload.Triggers.Add(dayTrigger);  
  32.             //autoDownload.SetAccountInformation(userName, userPwd);//to authorize the console ro run  
  33.             autoDownload.ApplicationName = Assembly.GetExecutingAssembly().Location;  
  34.               
  35.             //you can also modify the values in app.config   
  36.             //and publish it, then you can add the application name here  
  37.             //autoDownload.ApplicationName = "";  
  38.             autoDownload.Save();  
  39.             autoDownload.Close();  
  40.         }  
  41.         //else  
  42.         //{  
  43.         //    DelTask(taskName);  
  44.         //    AddTask();  
  45.         //}  
  46.     }  
  47.   
  48.     /// <summary>  
  49.     /// Select Task from TaskScheduler  
  50.     /// </summary>  
  51.     /// <param name="taskName"></param>  
  52.     /// <returns></returns>  
  53.     public bool SelTask()  
  54.     {  
  55.         bool flag = false;  
  56.         ScheduledTasks st = new ScheduledTasks();  
  57.         string[] taskNameStr = st.GetTaskNames();  
  58.         foreach (string item in taskNameStr)  
  59.         {  
  60.             if (taskName == item.Split('.')[0])  
  61.             {  
  62.                 flag = true;  
  63.                 break;  
  64.             }  
  65.         }  
  66.   
  67.         return flag;  
  68.     }  
  69.   
  70.     /// <summary>  
  71.     /// Delete Task  
  72.     /// </summary>  
  73.     /// <param name="taskName"></param>  
  74.     public void DelTask(string taskName)  
  75.     {  
  76.         if (taskName != "" && taskName != null)  
  77.         {  
  78.             ScheduledTasks st = new ScheduledTasks();  
  79.             st.DeleteTask(taskName);  
  80.         }  
  81.     }  
  82.   
  83.     /// <summary>  
  84.     /// Set Default Value for Variables  
  85.     /// </summary>  
  86.     public void InitVariables()  
  87.     {  
  88.         hour = ConfigurationManager.AppSettings["taskHour"];  
  89.         minute = ConfigurationManager.AppSettings["taskMinute"];  
  90.         interval = ConfigurationManager.AppSettings["interval"];  
  91.         taskName = ConfigurationManager.AppSettings["taskName"];  
  92.         userName = ConfigurationManager.AppSettings["taskUser"];  
  93.         userPwd = ConfigurationManager.AppSettings["taskPwd"];  
  94.     }  
  95. }  

這樣,一個簡單的任務計划操作類就完成了,簡單說下,因為目前我的很多的值都需要存儲在app.config中,以便日后修改或進行配置,所以我的變量大多是直接讀取app.config中的值來實現賦值的,這也是下一步我打算完善的,希望把這個作為一個公共類,可以讓其他人直接使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM