当前位置:  开发笔记 > 编程语言 > 正文

如何判断.Net System.Diagnostics.Process成功运行或失败?

如何解决《如何判断.NetSystem.Diagnostics.Process成功运行或失败?》经验,为你挑选了2个好方法。

我正在编写调度程序或排序.它基本上是一个包含exes列表的表(如"C:\ a.exe")和一个控制台应用程序,它每分钟左右查看表中的记录并运行尚未运行的任务.

我运行这样的任务:

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.FileName = someExe; // like "a.exe"
p.Start();

如何判断特定任务是否失败?例如,如果a.exe抛出未处理的异常怎么办?我想让上面的代码知道这种情况何时发生,并用"特定任务失败"等内容更新任务表.

我怎样才能做到这一点?

我没有使用Sql Agent或Windows Scheduler,因为其他人告诉我不要.他有更多的"经验"所以我基本上只是遵循命令.随意提出替代方案.



1> jop..:

您可以捕获Win32Exception以检查Process.Start()由于文件不存在而失败,或者执行访问被拒绝.

但是您无法捕获使用此类创建的进程抛出的异常.首先,应用程序可能不是用.NET编写的,因此可能根本没有异常的概念.

您可以做的是检查应用程序的ExitCode或读取StandardOutput和StandardError流以检查是否正在发布错误消息.



2> Kenny Mann..:

我认为你正在寻找Process.ExitCode,假设进程返回一个.您可能需要使用WaitForExit().还有一个ErrorDataReceived事件,当应用程序发送到stderr时会触发该事件.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有