C# 如何在不同的应用程序域中启动控制台应用程序的多个实例?

C# 如何在不同的应用程序域中启动控制台应用程序的多个实例?,c#,.net,console-application,appdomain,C#,.net,Console Application,Appdomain,我有一个控制台应用程序a和控制台应用程序B。 是否可以从A启动多个B实例。控制台应用程序B的每个实例都必须在其自己的应用程序域中运行,这一点很重要。 如果可能,如何做到这一点?控制台只能与一个进程关联。我看不出有其他方法可以System.Diagnostics.Process.Start(“B”) 请参见控制台只能与一个进程关联。我看不出有其他方法可以System.Diagnostics.Process.Start(“B”) 当然,这是可能的。应采取的步骤包括: 应用程序A创建一个新的应用程序域

我有一个控制台应用程序a和控制台应用程序B。 是否可以从A启动多个B实例。控制台应用程序B的每个实例都必须在其自己的应用程序域中运行,这一点很重要。
如果可能,如何做到这一点?

控制台只能与一个进程关联。我看不出有其他方法可以
System.Diagnostics.Process.Start(“B”)


请参见

控制台只能与一个进程关联。我看不出有其他方法可以
System.Diagnostics.Process.Start(“B”)


当然,这是可能的。应采取的步骤包括:

  • 应用程序A创建一个新的应用程序域
  • 在新的应用程序域中执行控制台应用程序B
  • 在控制台应用程序B完成执行后卸载新的应用程序域
  • 一个非常简单的例子是:

    var appDomain = AppDomain.CreateDomain("a name");
    
    appDomain.ExecuteAssembly("ConsoleApplicationB.exe"); //Update with the path to consolse application B.          
    
    AppDomain.Unload(appDomain);
    
    请注意,这是我能做的最简单的例子。选择更适合您需求的过载


    请注意,这是阻塞。在运行示例时,您会注意到这一点。控制台应用程序A将阻塞,直到应用程序B退出。您必须异步执行此操作。

    当然这是可能的。应采取的步骤包括:

  • 应用程序A创建一个新的应用程序域
  • 在新的应用程序域中执行控制台应用程序B
  • 在控制台应用程序B完成执行后卸载新的应用程序域
  • 一个非常简单的例子是:

    var appDomain = AppDomain.CreateDomain("a name");
    
    appDomain.ExecuteAssembly("ConsoleApplicationB.exe"); //Update with the path to consolse application B.          
    
    AppDomain.Unload(appDomain);
    
    请注意,这是我能做的最简单的例子。选择更适合您需求的过载

    请注意,这是阻塞。在运行示例时,您会注意到这一点。控制台应用程序A将阻塞,直到应用程序B退出。您必须异步执行此操作。

    @I4V

    我想你弄错了。一个进程只能与一个控制台关联

    这意味着一个进程只能与一个控制台(in | out | err)通信,换句话说,一个进程不能拥有多个控制台窗口

    也就是说,多个进程可以与一个控制台通信。理想的同步过程

    当然,有一些变通方法允许一个进程有多个控制台窗口(WinTTY)

    @I4V

    我想你弄错了。一个进程只能与一个控制台关联

    这意味着一个进程只能与一个控制台(in | out | err)通信,换句话说,一个进程不能拥有多个控制台窗口

    也就是说,多个进程可以与一个控制台通信。理想的同步过程


    当然,有一些解决方法允许一个进程有多个控制台窗口(WinTTY)

    Buy我需要多个appB实例,每个实例都在自己的应用程序域中启动。-1:每个新进程都有自己的AppDomain,所以进程。start应该可以,但看起来你在寻找其他的。不幸的是,目前还不清楚您到底在寻找什么,以及为什么单独的流程对您不起作用-请编辑您的问题,以明确separte流程是否可以,或者您需要具有多个AppDomain的单个流程。Buy I需要多个appB实例,每个实例都在其自己的应用程序域中启动。-1:每个新流程都有自己的应用程序域AppDomain so Process.Start应该可以,但看起来您正在寻找其他内容。不幸的是,目前还不清楚您到底在寻找什么,以及为什么单独的流程对您不起作用-请编辑您的问题,以明确separte流程是否可以,或者您需要具有多个AppDomain的单个流程。您在哪里读到的?进程可以通过使用AllocConsole或创建子进程共享同一控制台。这与应用程序域相同。新的应用程序域可以执行控制台应用程序,该应用程序将与主应用程序域共享控制台。您在哪里读到的?进程可以通过使用AllocConsole或创建子进程共享同一控制台。这与应用程序域相同。新的应用程序域可以执行控制台应用程序,该应用程序将与主应用程序域共享控制台。