如何将 Windows TaskScheduler RunDurationFor 更改为无限期

How to change WindowTaskScheduler RunDurationFor to Indefinitely

我有以下方法使用 ASquare.WindowsTaskScheduler 为 Windows 创建 TaskScheduler,它按预期工作。

public bool CreateTaskScheduler()
{
    var file = $"{Setting.GetDirectory()}\{Setting.GetSpacename()}.exe";
    var response = WindowTaskScheduler
        .Configure()
        .CreateTask(TaskName, file)
        .RunDaily()
        .RunEveryXMinutes(5)
        .Execute();
    if (response?.ErrorMessage != null)
    {
        System.Console.WriteLine(response?.ErrorMessage);
    }

    return response != null && response.IsSuccess;
}

现在要求有变化,我需要将 Duration 时间更改为 Indefinitely。

所以我尝试在代码中添加以下行:

.RunDurationFor(TimeSpan.MaxValue)

有效,但最长时间为 168 分钟,我搜索了一下,发现此 answer and this 试图在 .RunDurationFor 内更改 TimeSpan 以下内容:

尝试 1 new TimeSpan(0, 0, 0, 0, -1)

尝试 2 new TimeSpan(0, 0, 0, 0, Timeout.Infinite)

尝试 3 TimeSpan.FromMilliseconds(-1)

尝试 4 new TimeSpan(0, 23, 0, 0, 0)

当我运行 代码只尝试创建任务 Task Scheduler 到 23 小时。但是尝试 1、2 和 3 没有 return 任何异常但没有创建任务计划程序。

我的问题,知道如何在里面写什么 .RunDurationFor(//what to write here) 才能有效地创建无限期吗?

经过数小时的尝试和失败。我假设 ASquare.WindowsTaskScheduler 有错误或未更新。当然,如果有人找到了 ASquare 的解决方案,我仍然会给出一个合适的答案,但在此之前,这是我的替代解决方案:

我已经安装了 TaskScheduler 2.8 nuget 包,它可以按照我想要的方式使用以下代码:

public void CreateTaskScheduler()
{
    var file = $"{Setting.GetDirectory()}\{Setting.GetSpacename()}.exe";
    TaskService ts = new TaskService();
    TaskDefinition td = ts.NewTask();
    Trigger trigger = new DailyTrigger();
    trigger.Repetition.Interval = TimeSpan.FromMinutes(5);
    td.Triggers.Add(trigger);
    td.Actions.Add(new ExecAction(file, null, null));
    ts.RootFolder.RegisterTaskDefinition(TaskName, td);
}

因此 Indefinitely 持续时间是此代码的默认值。

这是我想要的结果的快照:

希望对您有所帮助。