0

我想在 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);
4

1 回答 1

2

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

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

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

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


按照设计,所有进程都旨在使用它们自己的独立内存异步运行。这是Explorer.exe可以用来启动程序但在它启动的程序崩溃时不会崩溃的方法。

于 2020-01-06T21:47:09.630 回答