我正在尝试在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();
答案 0 :(得分:2)
在等到完成之前关闭该过程。
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
}