以 不停的 ping baidu.com 为例
static void Main(string[] args)
{
try
{
using (Process p = new Process())
{
// set start info
p.StartInfo = new ProcessStartInfo("cmd.exe")
{
RedirectStandardInput = true,
UseShellExecute = false,
WorkingDirectory = @"E:\Private",
};
// event handlers for output & error
p.OutputDataReceived += p_OutputDataReceived;
p.ErrorDataReceived += p_ErrorDataReceived;
p.EnableRaisingEvents = true;
p.Exited += new EventHandler(Process_Exited);
for (int i = 0; i < 10000; i++)
{
// start process
p.Start();
//输入命令
// send command to its input
p.StandardInput.WriteLineAsync("ping www.baidu.com" + " &exit");
p.WaitForExit();
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
private static void Process_Exited(object sender, EventArgs e)
{
Console.WriteLine("命令执行完毕");
}
static void p_ErrorDataReceived(object sender, DataReceivedEventArgs e)
{
Process p = sender as Process;
if (p == null)
return;
Console.WriteLine(e.Data);
}
static void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
Process p = sender as Process;
if (p == null)
return;
Console.WriteLine(e.Data);
}
主要关键点是在执行命令后加一下 &exit
我在之前测试的时候没有加exit命令,输入其他命令后窗口就假死了,也没有输出内容。
加上 之后完美解决!