昨天有一個任務,就是要下載相關文件,然后保存在相關路徑下,這個沒什么難度,所以就略過不談,主要談談定時下載,即每天某個固定時間執行下載,這個功能我是用C#代碼來操作windows自帶的任務計划來實現的,所以我簡單的寫了一個任務計划操作類,以下是代碼主體部分,基本上可實現我需要的功能,當然,因為時間倉促,還不是很完善,我會盡量抽時間完善這個公共類,以便以后操作的時候,可以直接使用,廢話說完,開始進入正題:
1,首先下載TaskScheduler.dll,然后將其添加到引用中。
2,然后下面是TaskSchedulerHandler.cs的代碼,也就是滿足我的需要的操作類
- /// <summary>
- /// @Date:12/10/2012
- /// @Author:Andy
- /// @Desciption:class of add,delete and select Task Scheduler
- /// </summary>
- public class TaskSchedulerHandler
- {
- public string hour;//task hour
- public string minute;//task minute
- public string interval;//task interval
- public string taskName;//Name of Task
- public string userName;//user to authorize the task
- public string userPwd;//password of user
- public TaskSchedulerHandler()
- {
- InitVariables();
- }
- /// <summary>
- /// Add Task to TaskScheduler
- /// </summary>
- public void AddTask()
- {
- if (!SelTask())
- {
- ScheduledTasks st = new ScheduledTasks();
- Task autoDownload = st.CreateTask(taskName);
- DailyTrigger dayTrigger = new DailyTrigger(Convert.ToInt16(hour), Convert.ToInt16(minute), Convert.ToInt16(interval));//get default config from app.config
- autoDownload.Triggers.Add(dayTrigger);
- //autoDownload.SetAccountInformation(userName, userPwd);//to authorize the console ro run
- autoDownload.ApplicationName = Assembly.GetExecutingAssembly().Location;
- //you can also modify the values in app.config
- //and publish it, then you can add the application name here
- //autoDownload.ApplicationName = "";
- autoDownload.Save();
- autoDownload.Close();
- }
- //else
- //{
- // DelTask(taskName);
- // AddTask();
- //}
- }
- /// <summary>
- /// Select Task from TaskScheduler
- /// </summary>
- /// <param name="taskName"></param>
- /// <returns></returns>
- public bool SelTask()
- {
- bool flag = false;
- ScheduledTasks st = new ScheduledTasks();
- string[] taskNameStr = st.GetTaskNames();
- foreach (string item in taskNameStr)
- {
- if (taskName == item.Split('.')[0])
- {
- flag = true;
- break;
- }
- }
- return flag;
- }
- /// <summary>
- /// Delete Task
- /// </summary>
- /// <param name="taskName"></param>
- public void DelTask(string taskName)
- {
- if (taskName != "" && taskName != null)
- {
- ScheduledTasks st = new ScheduledTasks();
- st.DeleteTask(taskName);
- }
- }
- /// <summary>
- /// Set Default Value for Variables
- /// </summary>
- public void InitVariables()
- {
- hour = ConfigurationManager.AppSettings["taskHour"];
- minute = ConfigurationManager.AppSettings["taskMinute"];
- interval = ConfigurationManager.AppSettings["interval"];
- taskName = ConfigurationManager.AppSettings["taskName"];
- userName = ConfigurationManager.AppSettings["taskUser"];
- userPwd = ConfigurationManager.AppSettings["taskPwd"];
- }
- }
這樣,一個簡單的任務計划操作類就完成了,簡單說下,因為目前我的很多的值都需要存儲在app.config中,以便日后修改或進行配置,所以我的變量大多是直接讀取app.config中的值來實現賦值的,這也是下一步我打算完善的,希望把這個作為一個公共類,可以讓其他人直接使用。