我的问题是为什么在我更新我的 exe 之后“cmd”在我的进程中存在(空闲)?
在我的代码中我运行此代码来更新自己并启动
var args = string.Format(@"/C ping 1.1.1.1 -n 1 -w 3000 & move /Y ""{0}"" ""{1}"" & ""{1}"" {2}", updateFn, fn, exeargs);
new Process() { StartInfo = new ProcessStartInfo(@"cmd", args) { CreateNoWindow = true, UseShellExecute = false } }.Start();
Environment.Exit(0);
我的想法是立即退出,让 ping 暂停 3 秒,然后再尝试用更新后的 exe 替换当前的 exe。然后我使用必要的参数启动
cmd 的完整参数如下所示
/C ping 1.1.1.1 -n 1 -w 3000 并移动 /Y “c:\path\update” “c:\path\my.exe” 和 “c:\path\my.exe” exeargs
一切正常,但是当我的进程启动并正常运行后,我在任务管理器中看到 cmd(看起来处于空闲状态)。为什么?
答案1
您的论点的最后一部分是& "c:\path\my.exe" exeargs
导致命令解释器等待my.exe
运行完毕后再退出,显然my.exe
它不是一个可以自行运行和存在的程序;它保持活跃状态。
您可以使用start my.exe
命令解释器启动my.exe
并继续运行,而无需等待它。