如何在process.Start()之后安全地获取进程ID?

时间:2015-07-08 10:02:59

标签: c# .net

当程序被复制到许多位置然后独立启动时,有时可能会出现错误:

ProcessStartInfo startInfo = new ProcessStartInfo(exePath);
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.ErrorDialog = false;

Process process = new Process() { StartInfo = startInfo };
bool isStarted = process.Start();
int processId = process.Id; // Failed as bellow When the isStarted is false
  

System.InvalidOperationException:没有进程与此关联   对象

1 个答案:

答案 0 :(得分:1)

由于您正在启动EXE文件,因此您不需要UseShellExecute功能。对于某些不可理喻的原因,UseShellExecute默认设置为true。使用它需要很多复杂性。

UseShellExecute设为false,Start应始终返回true。然后,ID应始终有效。务必处置Process实例。