为什么Process的Exited方法不被调用?
我有以下代码,但为什么ProcessExited
方法从来没有被调用? 这是一样的,如果我不使用Windowsshell( startInfo.UseShellExecute = false
)。
ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.CreateNoWindow = true; startInfo.UseShellExecute = true; startInfo.WindowStyle = ProcessWindowStyle.Hidden; startInfo.FileName = path; startInfo.Arguments = rawDataFileName; startInfo.WorkingDirectory = Util.GetParentDirectory(path, 1); try { Process correctionProcess = Process.Start(startInfo); correctionProcess.Exited += new EventHandler(ProcessExited); correctionProcess.WaitForExit(); status = true; }
…..
internal void ProcessExited(object sender, System.EventArgs e) { //print out here }
为了接收Exited
事件的callback, EnableRaisingEvents
必须设置为true。
Process correctionProcess = Process.Start(startInfo); correctionProcess.EnableRaisingEvents = true; correctionProcess.Exited += new EventHandler(ProcessExited);
来自MSDN :
Exited事件表示关联的进程退出。 这种情况意味着进程终止(中止)或成功closures。 只有当EnableRaisingEvents属性的值为true时,才会发生此事件。
你把这个属性设置为true吗?
您必须将Process.EnableRaisingEvents
设置为true
。
设置correctionProcess.EnableRaisingEvents = true