1

我正在尝试做的事情:

将命令传递给 .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 不关闭,我会在一定时间后将其杀死,但命令完成的时间长度取决于各种因素。

4

1 回答 1

0

要在完成命令执行后退出 CMD 进程,请尝试在进程参数的开头添加“/C”:

p.StartInfo.Arguments = "/C (your arguments)";

如果你输入“cmd /?” 在命令提示符下,您会发现“/C: 执行字符串指定的命令然后终止”。

关于添加LoadingBar,需要了解BackgroundWorker类

于 2013-05-13T06:45:59.087 回答