在 c++ 托管和异步运行中调用 c# 可执行文件

Call c# executable in c++ managed and run asynchronously

本文关键字:调用 可执行文件 运行 异步 c++      更新时间:2023-10-16

我想在 C++ 托管项目主要功能结束时运行 c# 可执行文件 abc.exe。 ABC.exe需要异步运行,而不会干扰 C++ 托管项目,即使它遇到任何错误也是如此。

我发现该进程.exe异步运行,但是如果.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);

abc.exe 需要异步运行,而不会干扰 C++ 托管项目,即使它遇到任何错误也是如此。

两个单独的进程通常不会相互影响,而无需显式编写代码来相互通信。如果两个进程都使用共享资源(如硬件或文件(,则它们可以通过该共享资源相互干扰。我们需要有关 C# 和C++项目的更多详细信息,以告知它们是否可以以这种方式相互影响

我发现该进程.exe异步运行的,但是如果.exe遇到任何错误,该exe c ++托管项目该怎么办?

abc.exe进程将退出,C++进程将继续运行,就好像什么都没发生一样。如果需要,您可以实现代码以等待abc.exe退出并处理其返回值。


根据设计,所有进程都旨在使用自己的独立内存异步运行。这就是Explorer.exe可用于启动程序的方式,但在启动的程序崩溃时不会崩溃。