Вызов исполняемого файла C# в управляемом C++ и асинхронный запуск

Я хотел бы запустить исполняемый файл C# abc.exe в конце основных функций управляемого проекта C++. abc.exe необходимо запускать асинхронно, не нарушая управляемый проект C++, даже если он обнаруживает какие-либо ошибки.

Я обнаружил, что процесс запускает.exe async, но что, если.exe обнаружит какую-либо ошибку, будет ли этот управляемый проект exe C++?

        Process ^p;
        ProcessStartInfo ^pInfo;

        pInfo = gcnew ProcessStartInfo();
        pInfo->Verb = "open";
        pInfo->FileName = "d:\\abc.exe";
        pInfo->UseShellExecute = true;

        p = Process::Start(pInfo);

1 ответ

abc.exe необходимо запускать асинхронно, не нарушая управляемый проект C++, даже если он обнаруживает какие-либо ошибки.

Два отдельных процесса обычно не влияют друг на друга без явного написания кода для взаимодействия друг с другом. Если оба процесса используют общий ресурс, например оборудование или файл, они могут мешать друг другу через этот общий ресурс. Нам потребуется более подробная информация о ваших проектах C# и C++, чтобы сказать вам, могут ли они таким образом влиять друг на друга.

Я обнаружил, что процесс запускает.exe async, но что, если.exe обнаружит какую-либо ошибку, будет ли этот управляемый проект exe C++?

В abc.exeпроцесс завершится, а процесс C++ продолжит работу, как будто ничего не произошло. Вы можете реализовать код для ожиданияabc.exe для выхода и обработки возвращаемого значения, если хотите.


По замыслу, все процессы должны выполняться асинхронно с их собственной независимой памятью. Вот какExplorer.exe может использоваться для запуска программ, но не дает сбоев при сбое запущенной программы.

Другие вопросы по тегам