Вызов исполняемого файла 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
может использоваться для запуска программ, но не дает сбоев при сбое запущенной программы.