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

2 回答 2

4

我没有在这个包装器中看到这个 ScheduledTasks。

TaskScheduler Managed Wrapper使用服务习惯用法,您需要拥有文件夹的上下文。

他们的文档中有很好的示例,包括用于枚举所有任务的示例。

如果要查找特定任务:

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

如果您的任务在文件夹中,则使用类似以下的内容

var t = taskService.GetTask(taskFolder + "\\" + scheduledTaskName);
于 2013-04-17T10:33:24.687 回答
3

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

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

    if ( task != null ) {
        ...
    }
}
于 2015-08-17T10:36:32.087 回答