【问题标题】:Getting Error Code -2147216615 in Task scheduler 2.0在任务调度程序 2.0 中获取错误代码 -2147216615
【发布时间】:2017-04-03 11:11:26
【问题描述】:

我正在使用 https://taskscheduler.codeplex.com/ 提供的任务计划程序托管库。

我正在尝试使用以下代码注册任务。

ts.RootFolder.RegisterTaskDefinition(Curr_Task.Name, Curr_Task.Definition, TaskCreation.CreateOrUpdate, str_username, str_password, TaskLogonType.Password);

但是上面一行抛出了异常。

错误代码: -2147216615 错误消息: (10,8):StartBoundary: 堆栈跟踪如下:-

   at Microsoft.Win32.TaskScheduler.V2Interop.ITaskFolder.RegisterTaskDefinition(String Path, ITaskDefinition pDefinition, Int32 flags, Object UserId, Object password, TaskLogonType LogonType, Object sddl)
   at Microsoft.Win32.TaskScheduler.TaskFolder.RegisterTaskDefinition(String path, TaskDefinition definition, TaskCreation createType, String userId, String password, TaskLogonType logonType, String sddl) in D:\Jeet\Task Schedular API v2.5.22\Source Code\TaskService\TaskFolder.cs:line 424
   at SQScheduler.frmScheduleScenario.SetTriggerinTaskScheduler_New() in D:\Jeet\SQScheduler-branch_5.2\SQScheduler\Parameters\frmScheduleScenario.cs:line 1259

注意:当我第一次调用RegisterTaskDefinition 时,它工作正常。但是更新触发器后,再次调用时会抛出异常。

更新:XML如下:-

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2017-04-03T16:15:11.154+05:30</Date>
    <Description>Run parameters</Description>
  </RegistrationInfo>
  <Triggers>
    <TimeTrigger>
      <StartBoundary>2017-04-03T17:10:27.153</StartBoundary>
      <Enabled>true</Enabled>
    </TimeTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>FRSYMTRAX\JDoshi</UserId>
      <LogonType>Password</LogonType>
      <RunLevel>LeastPrivilege</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <Duration>PT10M</Duration>
      <WaitTimeout>PT1H</WaitTimeout>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT2H30M</ExecutionTimeLimit>
    <Priority>10</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>D:\Program Files (x86)\Symtrax\StarQuery\Debug\SQSRunTime.exe</Command>
      <Arguments>"C:\ProgramData\Symtrax\SQScheduler\My Scenarios\New API Scenarios\Test\Test FTP.xml" "9384bea0-0f56-4423-b6f5-f22f51bf2378"</Arguments>
    </Exec>
  </Actions>
</Task>

请建议进行此工作所需的更改!

【问题讨论】:

  • 实际上问题出在库的TriggerCollection.Add(Trigger t1) 上。即使通过调用TriggerCollection.Clear() 清除了TriggerList,它也不允许再次Add 触发。因此,通过第二次不调用 Add 的解决方法进行管理。
  • 我已将问题发布到论坛,稍后我也会在这里发布答案。

标签: c# scheduled-tasks


【解决方案1】:

如果将其转换为十六进制,您得到的错误代码 -2147216615 为 0x80041319,即listed 为 SCHED_E_MISSINGNODE,这意味着“任务 XML 缺少必需的元素或属性”。如果没有看到 XML,我无法知道问题出在哪里,但希望您能够从中解决问题。

【讨论】:

  • 附加了 XML。请检查
  • 你用什么方法转换成十六进制??在线十进制到十六进制转换器显示不同的值。我试过这个link
  • 我使用的是 Windows,所以我启动计算器,切换到 Programmer,在 Decimal 模式下,粘贴值,然后切换到 Hex 并忽略前导 FFFF。
  • 我拥有的架构适用于 1.3 版 (msdn.microsoft.com/en-us/library/windows/desktop/…),因此无法验证这一点(即 1.2 版)。
  • @JDoshi 您是否尝试过将您的任务 XML 直接导入任务计划程序?它可能会给你一个更有帮助的错误;或者至少证明 C# 库不是问题的一部分(我希望它不是问题的一部分)。 authorcode.com/… 有说明和 1.2 版示例
猜你喜欢
  • 2013-03-01
  • 2010-10-13
  • 1970-01-01
  • 2019-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
相关资源
最近更新 更多