Как запустить .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 = "";
        }
        
    }

Ответы (0 шт):