【发布时间】:2012-04-07 07:24:26
【问题描述】:
我的应用程序需要在每天午夜重新启动。根据我的说法,对于这项工作,任务调度程序将是理想的选择,但我无法找到如何在 C# 中使用任务调度程序 API(无需使用外部库)
从任务计划程序启动应用程序完成后,我还想要建议如何在特定时间自动关闭应用程序(即使该特定时间的应用程序可能没有响应、显示一些错误消息框或由于以下原因而无法运行)有问题)
【问题讨论】:
标签: c# scheduled-tasks
我的应用程序需要在每天午夜重新启动。根据我的说法,对于这项工作,任务调度程序将是理想的选择,但我无法找到如何在 C# 中使用任务调度程序 API(无需使用外部库)
从任务计划程序启动应用程序完成后,我还想要建议如何在特定时间自动关闭应用程序(即使该特定时间的应用程序可能没有响应、显示一些错误消息框或由于以下原因而无法运行)有问题)
【问题讨论】:
标签: c# scheduled-tasks
好吧,我想你不知道schtasks 命令。
您只需打开命令提示符并键入 schtasks /? 即可查看可用选项。
这里需要的是/create。当然这个选项需要一系列参数来配置你的计划任务。但最后你可以解决所有调用:
Process.Start("schtasks", commandParams);
对于关闭进程部分,我使用了一个名为 pskill 的小实用程序,该实用程序位于 Microsoft 的 Mark Russinovich 的 Sysinternals suite 中。这也可以在设置为计划任务的批处理文件中调用。
编辑:从 psshutdown 更改为 pskill(您只需要关闭您的应用程序对吗?)
【讨论】:
cmd 后,我能够使用消息Successfully created the task 创建此任务schtasks /create /tn "MyApp" /tr c:\app.exe /sc on start。显然,我的应用程序需要管理员权限才能运行,当我重新启动计算机时,该应用程序没有运行。我签入了 schticks /query,MyApp 状态显示为“无法启动”。对此有何建议?
Process.Kill?
我建议你编写一个服务来处理这个问题。另外,为什么它需要重启?
如果你必须使用任务调度器,试试这样:
schtasks /create /SC DAILY /TN AppName /TR AppExecutablePath /ST 0
0:00 /ET TIMEFORENDTASK
您可以简单地在批处理脚本中键入并在用户安装应用程序时运行批处理脚本,然后将其放入卸载批处理脚本中:
schtasks /delete /TN AppName
【讨论】:
ONSTART 而不是ON START... 因为这是在您的PC 上,我建议您使用GUI,这样可以避免拼写错误或其他错误。只需在命令提示符下键入start taskschd.msc 并使用创建任务向导。