C# 在第一个命令结束后向cmd发送第二个命令
在此处输入代码我想在我发送的第一个命令结束后向cmd发送命令。当我试图通过BeginErrorReadLine调用另一个命令时,出现了一个错误:流上已经启动了异步操作 如何再次连接进程并发送另一个命令?我想按另一个按钮发送第二个命令 带有cmd进程的第一个命令:C# 在第一个命令结束后向cmd发送第二个命令,c#,cmd,C#,Cmd,在此处输入代码我想在我发送的第一个命令结束后向cmd发送命令。当我试图通过BeginErrorReadLine调用另一个命令时,出现了一个错误:流上已经启动了异步操作 如何再次连接进程并发送另一个命令?我想按另一个按钮发送第二个命令 带有cmd进程的第一个命令: ProcessStartInfo cmdStartInfo = new ProcessStartInfo(); cmdStartInfo.FileName = "python.exe"; cmdStartInfo.Arguments =
ProcessStartInfo cmdStartInfo = new ProcessStartInfo();
cmdStartInfo.FileName = "python.exe";
cmdStartInfo.Arguments = ConfigurationManager.AppSettings["ttk"] + commandline;
cmdStartInfo.CreateNoWindow = true;
cmdStartInfo.RedirectStandardInput = true;
cmdStartInfo.RedirectStandardOutput = true;
cmdStartInfo.RedirectStandardError = true;
cmdStartInfo.UseShellExecute = false;
cmdStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
_cmd = new Process();
_cmd.StartInfo = cmdStartInfo;
if (_cmd.Start())
{
_cmd.OutputDataReceived += new DataReceivedEventHandler(_cmd_OutputDataReceived);
_cmd.ErrorDataReceived += new DataReceivedEventHandler(_cmd_ErrorDataReceived);
_cmd.Exited += new EventHandler(_cmd_Exited);
_cmd.BeginOutputReadLine();
_cmd.BeginErrorReadLine();
}
else
{
_cmd = null;
}
IIRC进程有一个已退出的事件来实现此目的。在您的情况下,它将是:
// non-blocking
_cmd.Exited += (sender, eventArgs) => { /* run after process exists */ };
或者,如果阻塞是可以的,您可以这样做:
_cmd.Start();
_cmd.WaitForExit(); // Blocking (until _cmd exists)
顺便说一句,System.Net可以发送ICMP ping…这太难看了。在您的情况下,不需要.NET,您可以通过一个简单的批处理脚本实现所有功能。@Robert the ping只是一个例子。实际上,我正在使用一个python脚本ant,我想在第一个脚本的末尾向这个脚本发送一个命令。您有解决方案吗?如何使用“新建”按钮执行此操作?但我不知道在该处理程序中编写什么。如何在脚本完成后再次引用脚本并运行新命令。我不想关闭进程,只是想再次连接它。谢谢你是说像这样的?我需要通过单击按钮2调用第二个命令。然而,我的过程是异步的。如何通过单击按钮并发送另一个命令来再次引用此过程?