Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 任务调度器中的.NET进程_C#_.net_Process_Scheduled Tasks - Fatal编程技术网

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语句。那么,我只剩下三种方法可以看到您的代码可以给出您看到的结果:

  • 第二个进程永远不会退出。你能在任务管理器中看到它吗
  • 您的代码引发异常。您是否在某处记录异常
  • 第二个进程退出,但从不报告已退出 你能先调查并消除1和2吗?首先看看简单的备选方案是个好主意


    更新:从AndrewKeith的评论中也可以看出代码可能根本没有被执行。随意插入日志语句,以便准确地看到正在发生的事情。例如,登录到一个文件。

    我猜与计划任务运行的用户有关的是一个安全问题。Ie:该程序与您一样工作正常,但作为计划任务用户,它不允许执行“program.exe”(或者更糟糕的是,您的程序)

    您可以查看任务计划程序日志(在任务计划程序控制面板->高级菜单中)。它应该为您的任务提供一个零(或者一)的退出代码。如果你得到一个非常大的退出代码,有些事情是不对的


    噢,Process.WaitForExit()可能比轮询循环更干净。

    您确定Process p=Process.Start(“program2.exe”);即使一开始就被执行了?我同意,p可能从来没有真正开始过,因此它会立即转到HasExited。您可以检查它的退出代码,看看是否有问题。顺便说一句,C#编程语言没有进程。NET。如何插入日志功能?在哪里?我是新来的c#谢谢如果你想将日志集成到你的项目中,你可以看看。如果你想要更轻的东西,你可以用。