2013-04-17 80 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) { 
     ... 
    } 
}