Моя проблема заключается в следующем:
У меня есть пользовательский интерфейс, созданный в Visual Studio с C ++ / CLI.
Теперь у меня есть событие кнопки, которое создает процесс, который запускает консольное приложение C ++ с параметрами.
Это отлично работает, консольное приложение выполняется с параметрами без ошибок, и я также вижу окно консоли с правильным выводом.
Но я все еще получаю исключение:
StandardOut не был перенаправлен или процесс еще не начался.
Я думаю, что это как-то связано с Streamreader и некоторыми DataReceivedEvents, но я понятия не имею.
Это мой код:
try {
String^ parameters = tbLoadXML->Text + " " + tbNumberAnts->Text + " " + tbIteration->Text + " " + tbReduction->Text + " " + tbPheromoneDeposit->Text + " " + tbPheromoneReduction->Text + " " + tbAlpha->Text + " " + tbBeta->Text + " " + reduce.ToString() + " " + algorithm.ToString() + " " + probabilityalgorithm.ToString() + " " + numbercities.ToString();
Process^ process = gcnew Process();
process->StartInfo->UseShellExecute = false;
process->StartInfo->CreateNoWindow = true;
process->StartInfo->RedirectStandardOutput = true;
process->Start("TSPACO.exe", parameters);
StreamReader^ reader = process->StandardOutput;
String^ output = reader->ReadToEnd();
textBox1->Text += output;
process->WaitForExit();
process->Close();
}
catch (Exception^ ex) {
MessageBox::Show(ex->Message);
}
Я также попробовал цикл while:
while (!process->StandardOutput->EndOfStream)
{
textBox1->Text += process->StandardOutput->ReadLine();
}
Но на самом деле ничего не работает - я понятия не имею, почему.