c# - 如何使用 taskschd.dll 库从任务计划程序中查找所有正在运行和就绪的任务

标签 c# scheduled-tasks

ITaskService s = new TaskSchedulerClass();

s.Connect(
    this.ControllerName, 
    Configuration.UserName, 
    Configuration.Domain, 
    Configuration.Password);

ITaskFolder tf = s.GetFolder("\\");

IRegisteredTaskCollection allTask = null;

IRunningTaskCollection allTaskRunning  = s.GetRunningTasks(0);

我可以使用 IRunningTaskCollection 获取正在运行的任务,但是找不到就绪的任务。

最佳答案

不幸的是,没有方便的方法,但您可以编写自己的方法。使用递归遍历任务文件夹层次结构。像这样的……

private static List<IRegisteredTask> GetReadyAndRunningTasks(
    ITaskFolder folder, 
    List<IRegisteredTask> readyAndRunningTasks = null)
{
    if (readyAndRunningTasks == null)
    {
        readyAndRunningTasks = new List<IRegisteredTask>();
    }

    IRegisteredTaskCollection tasks = folder.GetTasks(flags: 0);

    foreach (IRegisteredTask task in tasks)
    {
        if (task.State == _TASK_STATE.TASK_STATE_READY
            || task.State == _TASK_STATE.TASK_STATE_RUNNING)
        {
            readyAndRunningTasks.Add(task);
        }
    }

    foreach (ITaskFolder subFolder in folder.GetFolders(flags: 0))
    {
        GetReadyAndRunningTasks(subFolder, readyAndRunningTasks);
    }

    return readyAndRunningTasks;
}

然后这样调用...

List<IRegisteredTask> readyAndRunningTasks 
    = GetReadyAndRunningTasks(s.GetFolder(Path: "\\"));

关于c# - 如何使用 taskschd.dll 库从任务计划程序中查找所有正在运行和就绪的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32148005/

相关文章:

c# - Unity 着色器错误

c# - 使用 Wix 的自定义操作检查是否安装了 .NET Core

c# - C# 事件处理程序应该是异常安全的吗?

Powershell 计划任务在启动时重复

c# - 计划任务出错,仅当未登录时

java - 为什么使用 EJB @Schedule 的类不能是抽象类?

Powershell - 手动触发计划作业

c# - 使用 sql 数据库部署 wpf 应用程序

c# - 如何在 bash 命令启动后保持应用程序打开 C#

vba - 多个 MS Access 数据库 + Outlook (VBA) 在计划任务运行期间挂起