程序对Process.Exited没有反应
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序对Process.Exited没有反应相关的知识,希望对你有一定的参考价值。
我正在尝试在WPF / C#应用程序中运行一些脚本(VBScript作为示例),并在脚本运行完成后使其自行关闭。
string scriptName = "test.vbs";
int abc = 2;
string name = "Script";
ProcessStartInfo ps = new ProcessStartInfo();
ps.FileName = "cscript.exe";
ps.Arguments = string.Format(""{0}" "{1}" "{2}"", scriptName, abc, name);
Process p = new Process();
p.StartInfo = ps;
p.Exited += this.End;
p.Start();
p.Close();
我怎样才能做到这一点?事件“退出”就不会发生。
实际上没有p.EnableRaisingEvents = true是一个问题。正确的代码是:
Process p = new Process();
p.EnableRaisingEvents = true;
p.StartInfo = ps;
p.Exited += this.End;
p.Start();
答案
在等到完成之前关闭该过程。
在这种情况下,p.WaitForExit()
似乎是等待进程完成的更好方法(只要您在进程运行时不想并行执行任何其他操作)。
using (Process p = new Process())
{
p.StartInfo = ps;
p.Start();
p.WaitForExit();
// Do whatever you want to do after the process has finished
}
以上是关于程序对Process.Exited没有反应的主要内容,如果未能解决你的问题,请参考以下文章
Event Process.Exited在while循环中重新实例化后超过其对象生命
centOS 7一个解决“network.service: control process exited, code=exited status=1”方法
centos 7 vsftpd重启报错 vsftpd.service: control process exited, code=exited status=1
main process exited, code=exited, status=203/EXEC