当程序被复制到许多位置然后独立启动时,有时可能会出现错误:
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:没有进程与此关联 对象
答案 0 :(得分:1)
由于您正在启动EXE文件,因此您不需要UseShellExecute
功能。对于某些不可理喻的原因,UseShellExecute
默认设置为true。使用它需要很多复杂性。
将UseShellExecute
设为false,Start
应始终返回true
。然后,ID应始终有效。务必处置Process
实例。