2013-04-13 77 views
7

我正在使用Task Scheduler來安排我在c#應用程序中的任務。我想我對這個圖書館有了基本的瞭解。如何通過c安排自定義任務#

但現在我卡在那裏我想創建一個自定義操作,這將在集schedule.Like的built-in actionEmailAction(這將在設定的時間表發送郵件)執行的地方,ShowMessageAction(將在設定的時間表上顯示警報消息),我想創建一個將運行我的C#代碼的動作,並且該代碼將一些數據保存到我的數據庫。

我試過卻又是:我創建了一個類CustomAction它繼承行動,如:

public class NewAction : Microsoft.Win32.TaskScheduler.Action 
{ 
    public override string Id 
    { 
     get 
     { 
      return base.Id; 
     } 
     set 
     { 
      base.Id = value; 
     } 
    } 

    public NewAction() 
    { 
    } 
} 

這是我的任務調度代碼:

.. 
    ... 
    // Get the service on the local machine 
    using (TaskService ts = new TaskService()) 
    { 
     // Create a new task definition and assign properties 
     TaskDefinition td = ts.NewTask(); 
     td.RegistrationInfo.Description = "Does something"; 

     // Create a trigger that will fire the task at this time every other day 
     TimeTrigger tt = new TimeTrigger(); 

     tt.StartBoundary = DateTime.Today + TimeSpan.FromHours(19) + TimeSpan.FromMinutes(1); 
     tt.EndBoundary = DateTime.Today + TimeSpan.FromHours(19) + TimeSpan.FromMinutes(3); 
     tt.Repetition.Interval = TimeSpan.FromMinutes(1); 

     td.Triggers.Add(tt); 

     // Create an action that will launch Notepad whenever the trigger fires 
     td.Actions.Add(new NewAction()); <========================== 

     // Register the task in the root folder 
     ts.RootFolder.RegisterTaskDefinition(@"Test", td); 

     // Remove the task we just created 
     //ts.RootFolder.DeleteTask("Test"); 
    } 
    ... 
    .... 

上線(箭頭指出)我得到的例外:

值不在預期範圍的任務調度

內我不知道什麼,我試圖實現,甚至有可能與否,如果有可能比請我的GUID的正確方向?

+1

你不能只是讓它執行隨機動作。只有4個行動可用。運行自定義代碼使用exec操作執行一個進程,該進程將執行任何你想要的代碼。 – devshorts

回答

1

根據我對你的問題的理解。我已經實現了同樣的事情,但是我使用「Quartz」Scheduler而不是「Task Scheduler」。這很容易實現。也許你也可以試試這個。

要參考: http://quartznet.sourceforge.net/tutorial/

請糾正我,如果我錯了。