程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#查看、創建和刪除系統任務計劃程序

C#查看、創建和刪除系統任務計劃程序

編輯:C#入門知識

查看系統下所有的任務計劃程序 [csharp]   TaskSchedulerClass ts = new TaskSchedulerClass();               ts.Connect(null, null, null, null);               ITaskFolder folder = ts.GetFolder("\\");   IRegisteredTaskCollection tasks_exists = folder.GetTasks(1);                   for (int i = 1; i <= tasks_exists.Count; i++)                   {                       IRegisteredTask t = tasks_exists[i];                      }     注意下標是從1開始的。這樣就遍歷了所有的計劃任務,可以依次查看它們的各個屬性。如果你想創建什麼樣的計劃任務,不妨先手動創建一個,再用這段代碼查看,這樣就知道該設置什麼屬性了 創建自定義任務計劃程序     1.實例化對象 [csharp]   //實例化任務對象               TaskSchedulerClass scheduler = new TaskSchedulerClass();               scheduler.Connect(null, null, null, null);//連接   注:只有Connect之後才能使用   2.設置基本屬性     [csharp]   ITaskDefinition task = scheduler.NewTask(0);                   task.RegistrationInfo.Author = "BluceYoung";//創建者                   task.RegistrationInfo.Description = "http://blog.csdn.net/bluceyoung";//描述     3.設置觸發器 觸發器有很多種,這個在手動創建計劃任務的時候就會發現,如下圖     當然最常用的就是按時間觸發,每隔幾天或每個幾個月的觸發器用IDailyTrigger,網上的很多都是以這個為例。我在這裡就拿ITimerTrigger做個例子,能實現幾分鐘就觸發一次的效果。   [csharp]   ITimeTrigger tt = (ITimeTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);                   tt.Repetition.Interval = "PT30M";//循環時間                      tt.StartBoundary = "2013-01-21T14:27:25";//開始執行時間     Interval屬性 就是設置的循環時間,但並不是我們熟悉的毫秒數。它的值需要滿足“PT1H1M”的格式,就是幾小時幾分鐘執行一次,這個值對應的是觸發器對話框的“重復任務間隔”如下圖:     設置的值最終都會轉換成分鐘加入到觸發器   官方解釋:   The amount of time between each restart of the task. The format for this string is P<days>DT<hours>H<minutes>M<seconds>S (for example, "PT5M" is 5 minutes, "PT1H" is 1 hour, and "PT20M" is 20 minutes). The maximum time allowed is 31 days, and the minimum time allowed is 1 minute.   StartBoundary屬性 開始執行時間,最常用的格式就是:2005-10-11T13:21:17。官方解釋如下:   The date and time must be in the following format: YYYY-MM-DDTHH:MM:SS(+-)HH:MM. The (+-)HH:MM section of the format defines a certain number of hours and minutes ahead or behind Coordinated Universal Time (UTC). For example the date October 11th, 2005 at 1:21:17 with an offset of eight hours behind UTC would be written as 2005-10-11T13:21:17-08:00. If Z is specified for the UTC offset (for example, 2005-10-11T13:21:17Z), then the no offset from UTC will be used. If you do not specify any offset time or Z for the offset (for example, 2005-10-11T13:21:17), then the time zone and daylight saving information that is set on the local computer will be used. When an offset is specified (using hours and minutes or Z), then the time and offset are always used regardless of the time zone and daylight saving settings on the local computer.www.2cto.com   4.設置動作 [csharp]  IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);                   action.Path = "C:\\Windows\\System32\\calc.exe";     也可以設置發一封郵件,不過還是執行程序的情況多   5.其他設置 [csharp]   task.Settings.ExecutionTimeLimit = "PT0S";                   task.Settings.DisallowStartIfOnBatteries = false;                   task.Settings.RunOnlyIfIdle = false;     ExecutionTimeLimit屬性 此屬性的值對應的是“設置”選項卡的執行期限,如下圖     如果想設置成如圖所示的效果,就是把復選框勾掉,那就是PT0S;   官方解釋:   The format for this string is PnYnMnDTnHnMnS, where nY is the number of years, nM is the number of months, nD is the number of days, 'T' is the date/time separator, nH is the number of hours, nM is the number of minutes, and nS is the number of seconds (for example, PT5M specifies 5 minutes and P1M4DT2H5M specifies one month, four days, two hours, and five minutes). A value of PT0S will enable the task to run indefinitely.   DisallowStartIfOnBatteries屬性 對應的是“條件”選項卡的“只有在交流電源下才……”的復選框   RunOnlyIfIdle屬性 對應的是“條件”選項卡的“僅當計算機空閒時才……”的復選框   如下圖     6.注冊任務 [csharp]  IRegisteredTask regTask = folder.RegisterTaskDefinition(                        "BluceYoungTask",                        task,                        (int)_TASK_CREATION.TASK_CREATE,                        null, //user                        null, // password                        _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,                        "");                                      IRunningTask runTask = regTask.Run(null);     其中的BluceYoungTask就是此任務計劃程序的名字   _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN 的意思,貌似是用當前登錄的賬戶去注冊任務(所以登錄名和密碼都是null),而且只有在當前用戶登錄的情況下才起作用,其他的枚舉值沒有測試       刪除任務計劃程序 [csharp]   private void DeleteTask(string taskName)           {               TaskSchedulerClass ts = new TaskSchedulerClass();               ts.Connect(null, null, null, null);               ITaskFolder folder = ts.GetFolder("\\");               folder.DeleteTask(taskName, 0);           }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved