У меня есть 2 внешних процесса для запуска (2 консоли exe), которые обеспечивают вывод на консоль.Я запускаю эти приложения в приложении wpf.Я фиксирую вывод консоли и использую его как ввод.
вот как я делаю 1. запустить первый процесс.захватить вывод консоли.2. сделать некоторую работу, используя первый вывод процесса.3. Запустите второй процесс после того, как у меня будет вывод «do некоторая работа».
Проблема, с которой я столкнулся, заключается в том, что мне нужно дождаться завершения другого процесса и использовать его вывод, прежде чем я смогу запустить другой процесс.К тому времени, когда я хочу запустить второй процесс, первый процесс еще не завершен.
public MainWindow()
{
InitializeComponent();
ExtProcess1();
ExtProcess2(); //this is executed before ExtProcess1 OutputDataReceived is completely captured
Instance = this;
}
public static void ExtProcess1()
{
Process process = new Process();
process.EnableRaisingEvents = true;
process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived);
process.Exited += new EventHandler(process_Exited);
process.StartInfo.FileName = "test.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = true;
process.Start();
process.PriorityClass = ProcessPriorityClass.RealTime;
process.BeginOutputReadLine();
process.WaitForExit();
}
static void process_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
if (MainWindow.Instance.lbLog.Dispatcher.Thread == Thread.CurrentThread)
{
String s = (String)e.Data;
MainWindow.Instance.lbLog.Items.Add(s);
}
else
{
MainWindow.Instance.lbLog.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send,
new EventHandler<DataReceivedEventArgs>(corePingPid_OutputDataReceived), sender, new object[] { e });
}
}
Как заставить приложение wpf ждать первого процесса ДО запуска второго процесса?