使用任务计划程序托管包装程序的计划任务

时间:2013-04-17 03:16:03

标签: c# scheduled-tasks

在过去几天里,我已经做了很多关于检查是否存在计划任务的搜索,如果存在,<insert awesome here>。基本上我有一个安装和卸载我们软件的计划任务的应用程序。我现在需要做的是,如果任务在那里,则选中一个复选框,如果不是,则取消选中。有人提到使用:

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

这对我不起作用,它声明无法找到ScheduledTasks命名空间。我相信我有我需要安装的东西。 “使用Microsoft.Win32.TaskScheduler;”

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:3)

要添加到Dove的答案(我还没有代表评论),您还可以使用TaskScheduler的FindTask方法,它允许您忽略使用名称指定子文件夹如果您通过传递“True”作为第二个参数在子文件夹中启用搜索;例如。

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

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