使用Microsoft.Win32.TaskScheduler.dll

时间:2018-09-26 08:25:24

标签: .net c++-cli delay taskscheduler

我正在开发VS2015。我想触发20秒后运行我的应用程序。我该如何使用Microsoft.Win32.TaskScheduler.dll? 我的代码如下:

    void Actions::ScheduleRunApp()
{
    TaskService^ ts = gcnew TaskService();
    TaskDefinition^ td = ts->NewTask();
    td->RegistrationInfo->Description = "Run LocalLockApp";
    //td->Triggers->Add(gcnew DailyTrigger(2)); i want to run the application after 20 seconds instead
    td->Actions->Add(gcnew ExecAction("notepad.exe", "C:\\test.log", nullptr));
    ts->RootFolder->RegisterTaskDefinition(L"Test",td);
    ts->RootFolder->DeleteTask(L"Test",true);
}

1 个答案:

答案 0 :(得分:0)

似乎您有两个应用程序,并且您试图让应用程序#1运行应用程序#2,可能在应用程序#2启动之前退出了应用程序#1。

乍一看,我想说使用Task Scheduler来解决这个问题是错误的。 Task Scheduler用于定期启动维护任务,例如每天凌晨4:00。您可以创建一个任务,该任务被触发只能运行一次,现在+ 20秒,但是可能有更好的方法可以执行此任务。

在这种情况下,我会做以下两件事之一:

  • 保持应用程序#1的运行。睡眠20秒钟,然后运行应用程序#2。如果用户已请求退出应用程序,请隐藏您的窗口。
  • 创建一个助手应用程序。该辅助应用程序的工作是延迟20秒,然后运行应用程序#2。让应用程序1启动助手应用程序,然后应用程序1可以自由退出。如果您不希望再挂另一个.exe文件,甚至可以使用批处理文件来完成此操作。

如果您绝对必须使用Task Scheduler,那么我相信您希望使用TimeTrigger而不是DailyTrigger。您也可能不想在运行DeleteTask之前调用它:相反,请确保已设置属性,以便在不再计划运行该任务时自动删除该任务。