为什么Task Scheduler Managed Wrapper在本地运行时与在服务器上运行时给出不同的结果?

时间:2013-06-11 21:23:46

标签: c# asp.net scheduled-tasks

我正在使用Task Scheduler Managed Wrapper从服务器获取预定任务信息。这是我的代码,我几乎从文档中收集了这些代码:

    public List<ScheduledTask> GetScheduledTasks()
    {
        using (TaskService ts = new TaskService("SERVERNAME", "userId", "domain", "password"))
        {
            foreach (var scheduledTask in ScheduledTasksToGet)
            {
                var task = ts.FindTask(scheduledTaskName);
                var taskScheduled = new ScheduledTask();
                taskScheduled.Name = task.Name;
                taskScheduled.LastRunTime = task.LastRunTime;
                taskScheduled.LastRunResult = task.LastTaskResult;
                scheduledTasks.Add(taskScheduled);
            }
        }
        return scheduledTasks;
    }

我正在尝试从2008 R2服务器检索任务信息的服务器。我已经确认我要检索的所有任务都在根文件夹中。当我在Windows 7机器上本地运行时,此代码工作正常。但是,当我将应用程序部署到我们的2003 SP2 QA服务器时,我无法检索任何任务。我也试过这段代码:

    public List<ScheduledTask> GetScheduledTasks()
    {
        using (TaskService ts = new TaskService("SERVERNAME", "userId", "domain", "password"))
        {
            EnumerateFolderTasks(ts.RootFolder, tasks);
            foreach (var task in tasks)
            {
                if (ScheduledTasksToGet.Any(t => task.Name.StartsWith(t)))
                {
                    var scheduledTask = new ScheduledTask();
                    scheduledTask.Name = task.Name;
                    scheduledTask.LastRunTime = task.LastRunTime;
                    scheduledTask.LastRunResult = task.LastTaskResult;
                    scheduledTasks.Add(scheduledTask);
                }
            }
        }
    }

    private void EnumerateFolderTasks(TaskFolder folder, List<Microsoft.Win32.TaskScheduler.Task> tasks)
    {
        foreach (Microsoft.Win32.TaskScheduler.Task task in folder.Tasks)
            tasks.Add(task);
        foreach (TaskFolder subFolder in folder.SubFolders)
            EnumerateFolderTasks(subFolder, tasks);
    }

同样,这段代码在本地运行良好,但在服务器上我只有在我预期10时才返回一个任务。我理解任务调度程序1和任务调度程序2之间存在差异。我还在其他地方阅读因此,任务调度程序版本1可能无法使用某些任务调度程序托管包装器方法,或者不能像版本2那样工作。我猜这是导致行为差异的原因。但是,我查看了网络和文档,我很难找到哪种方法可以使任务适用于版本1.

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我终于能够将应用程序移动到Windows 2008服务器,并且代码运行得非常好。