C# 任务调度器中的.NET进程
我有一个执行另一个程序的程序,当该程序完成时,主程序继续运行C# 任务调度器中的.NET进程,c#,.net,process,scheduled-tasks,C#,.net,Process,Scheduled Tasks,我有一个执行另一个程序的程序,当该程序完成时,主程序继续运行 Process p = Process.Start("program2.exe"); while (!p.HasExited) Thread.Sleep(10000); if (p.HasExited) { // Execute more code } 这和我运行程序时的效果一样好。但在windows中将其用作计划任务时不起作用。这部分永远不会执行 if (p.HasExited) { // Execute
Process p = Process.Start("program2.exe");
while (!p.HasExited)
Thread.Sleep(10000);
if (p.HasExited)
{
// Execute more code
}
这和我运行程序时的效果一样好。但在windows中将其用作计划任务时不起作用。这部分永远不会执行
if (p.HasExited)
{
// Execute more code
}
似乎找不到调试这个的方法。
我已经在这个程序上呆了一个星期了。如果假设p.haseExit是真的,那么代码会更简单。然后可以删除if语句。那么,我只剩下三种方法可以看到您的代码可以给出您看到的结果:
更新:从AndrewKeith的评论中也可以看出代码可能根本没有被执行。随意插入日志语句,以便准确地看到正在发生的事情。例如,登录到一个文件。我猜与计划任务运行的用户有关的是一个安全问题。Ie:该程序与您一样工作正常,但作为计划任务用户,它不允许执行“program.exe”(或者更糟糕的是,您的程序) 您可以查看任务计划程序日志(在任务计划程序控制面板->高级菜单中)。它应该为您的任务提供一个零(或者一)的退出代码。如果你得到一个非常大的退出代码,有些事情是不对的
噢,Process.WaitForExit()可能比轮询循环更干净。您确定Process p=Process.Start(“program2.exe”);即使一开始就被执行了?我同意,p可能从来没有真正开始过,因此它会立即转到HasExited。您可以检查它的退出代码,看看是否有问题。顺便说一句,C#编程语言没有进程。NET。如何插入日志功能?在哪里?我是新来的c#谢谢如果你想将日志集成到你的项目中,你可以看看。如果你想要更轻的东西,你可以用。