2013-04-17 239 views
4

在過去幾天中,我已經進行了大量搜索,以檢查計劃任務是否存在,如果有的話<insert awesome here>。基本上我有一個應用程序可以安裝和卸載我們軟件的計劃任務。我現在需要做的是有一個複選框,如果任務存在,則選中該複選框,如果不存在則取消選中。有使用一個參考:使用任務計劃程序的計劃任務託管打包程序

 ScheduledTasks st = new ScheduledTasks(server); 
     string[] taskNames = st.GetTaskNames(); 
     List<string> jobs = new List<string>(taskNames); 

這是不工作對我來說,它說明該ScheduledTasks命名空間無法找到。我相信我有我需要安裝的東西。 「使用Microsoft.Win32.TaskScheduler;」

回答

4

我在這個包裝中沒有看到這個ScheduledTasks。

TaskScheduler Managed Wrapper使用服務習慣用法,您需要擁有文件夾的上下文。

他們在自己的documentation很好的例子,其中包括一個enumerating all tasks

如果你想找到一個特定的任務:

var t = taskService.GetTask(scheduledTaskName); 
bool taskExists = t!=null; 
if(taskExists) DoYourThing(); 

,如果你的任務是在文件夾中,然後使用類似下面

var t = taskService.GetTask(taskFolder + "\\" + scheduledTaskName); 
+0

是的,我在看那個,但它沒有具體的找到一個特定的任務,驗證它是否存在,如果是的話然後做一個任務。上面的代碼只是給出了所有的任務列表。請注意,我對c#有點新鮮,所以我可能會錯過一些東西。 – ShaneTheTech

+0

更新的答案更適合那個 – dove

+0

謝謝先生。在我看後它似乎很簡單。非常感謝。 – ShaneTheTech

2

要由鳩添加到應答(我沒有代表尚未就此發表評論),您還可以使用TaskScheduler的FindTask方法,它可以讓你忽略通過傳遞「真」作爲第二個名稱爲指定的子文件夾,如果您啓用子文件夾內搜索參數;例如。

using (TaskService sched = new TaskService()) { 
    var task = sched.FindTask("UniqueTaskName", true); 

    if (task != null) { 
     ... 
    } 
}