2011-09-12 188 views
104

我目前正在開發一個C#WPF項目。我需要允許用戶創建計劃任務並將其添加到Windows任務計劃程序。創建計劃任務

我該如何去做這件事,以及我需要什麼使用指令和參考,因爲我在搜索互聯網時找不到太多東西。

+1

每個你需要的是這裏:http://msdn.microsoft.com/en-us/library/aa383614(v=vs.85).aspx。 API,有關如何以編程方式實現所需內容的示例和解釋。 – kroonwijk

回答

171

您可以使用Task Scheduler Managed Wrapper

using System; 
using Microsoft.Win32.TaskScheduler; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     // 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 
     td.Triggers.Add(new DailyTrigger { DaysInterval = 2 }); 

     // Create an action that will launch Notepad whenever the trigger fires 
     td.Actions.Add(new ExecAction("notepad.exe", "c:\\test.log", null)); 

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

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

或者您可以使用native API或去Quartz.NET。詳情請參閱this

+2

是的,你需要下載並引用Microsoft.Win32.TaskScheduler.dll。鏈接在答案中。 – Dmitry

+0

對不起,我以爲我確實添加了參考,但由於某種原因,它不是。對不起,但確實很好。感謝您的幫助 – Boardy

+1

@Dmitry你如何開始一項任務?你需要使用Windows調度程序註冊嗎? – Haroon

17

這對我的作品 https://www.nuget.org/packages/ASquare.WindowsTaskScheduler/

這是很好的設計流利的API。

//This will create Daily trigger to run every 10 minutes for a duration of 18 hours 
SchedulerResponse response = WindowTaskScheduler 
    .Configure() 
    .CreateTask("TaskName", "C:\\Test.bat") 
    .RunDaily() 
    .RunEveryXMinutes(10) 
    .RunDurationFor(new TimeSpan(18, 0, 0)) 
    .SetStartDate(new DateTime(2015, 8, 8)) 
    .SetStartTime(new TimeSpan(8, 0, 0)) 
    .Execute(); 
+1

有沒有辦法將這些信息存儲到SQL服務器數據庫中? – Fearcoder