我正在尝试做的事情:
将命令传递给 .cmd,在命令执行时显示加载条,退出 cmd 并在进度条已满后显示消息框
发生了什么:
当我单击发送命令的按钮时,应用程序挂起,命令被执行,但 CMD 在完成后永远不会退出,因此应用程序保持冻结状态(直到我手动关闭 cmd.exe)。我也不知道如何在命令执行时显示加载栏。当加载栏已满时,我将显示消息框。
我的代码:
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.WorkingDirectory = @"C:\"
p.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.Start();
p.StandardInput.WriteLine(Command_That's_Called);
^ 在 button_Click 事件时执行。
我尝试过的事情:
p.WaitForExit(); // still hangs
也是线程,但我收到一个错误,例如“从创建它的线程以外的线程访问”。
关于 CMD 不关闭,我会在一定时间后将其杀死,但命令完成的时间长度取决于各种因素。