Как запустить .exe и дождаться окончания его работы?
Часть кода находится в .exe с#. Если запускать основную часть программы, то в ней происходит на миг запуск .exe c#. В теории я хочу, чтобы код остановился, подождал выполнения кода с#, (там записал результаты в файл), а затем вернулся обратно в с++ и доделал нужную работу (считать из файла данные, которые код с# записал), но код не ждет и идет дальше, поэтому программа работает не так, как надо. Пытаюсь использовать process->WaitForExit, потоки, не работает.
public: Thread^ t;
public: void binRecord() {
auto process = Process::Start("c#CodePart\\c#CodePart\\bin\\Debug\\net6.0\\c#CodePart.exe");
process->WaitForExit(); //не работает
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
string path = "../../validoCfg.txt";
String^ num = textBox1->Text;
if (num->Length == 16) {
label1->Text = "Введите 16-значное значение карты (без пробелов)";
summa_nech(num);
summa_chet(num);
bool proverka = isValid(num);
if (proverka == true) {
string num_conv = msclr::interop::marshal_as<std::string>(num);
string bin = num_conv.substr(0, 6);
ofstream out(path); //запись
if (out.is_open())
{
out << bin;
}
out.close();
t = gcnew Thread(gcnew ThreadStart(this, &MyForm1::binRecord));
t->Start(); //не работает также
t->Join();
string arr[9];
ifstream in(path); //считывание
string s;
int i = 0;
if (in.is_open());
{
while (getline(in, s)) {
arr[i] = s;
++i;
}
}
in.close();
label20->Text = "Ваш номер: валидный";
label11->Text = msclr::interop::marshal_as<String^>(arr[0]);
label12->Text = msclr::interop::marshal_as<String^>(arr[1]);
label13->Text = msclr::interop::marshal_as<String^>(arr[2]);
label14->Text = msclr::interop::marshal_as<String^>(arr[3]);
label15->Text = msclr::interop::marshal_as<String^>(arr[4]);
label16->Text = msclr::interop::marshal_as<String^>(arr[5]);
label17->Text = msclr::interop::marshal_as<String^>(arr[6]);
label18->Text = msclr::interop::marshal_as<String^>(arr[7]);
label19->Text = msclr::interop::marshal_as<String^>(arr[8]);
showLabels();
}
else {
label20->Text = "Ваш номер: невалидный";
hideIncorrectLabels();
label11->Text = "";
label12->Text = "";
label13->Text = "";
label14->Text = "";
label15->Text = "";
label16->Text = "";
label17->Text = "";
label18->Text = "";
label19->Text = "";
}
}
else {
label1->Text = "Введите корректное 16-ое значение";
textBox1->Text = "";
}
}