繁体   English   中英

在运行cmd.exe时加载栏

[英]Loading bar while cmd.exe is running

我正在尝试做的是:

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

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

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

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

要添加一个LoadingBar,您需要了解BackgroundWorker类

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM