Кросс-приложениеДоменный доступ к Console.Out

Мне нужно прочитать стандартный вывод из приложения (Core.exe), который выполняется в том же процессе, но в другом домене приложения. Это довольно легко перенаправить вывод, когда кто-то имеет дело с процессом, но концепция appDomains для меня нова.

Итак .. я запускаю приложение в изолированном домене приложения, вот так

new HostedApp("core", "Core.exe").Run();

class HostedApp
{
    internal string DomainName;
    internal string AssemblyName;
    internal AppDomain Ad;
    internal Thread AppThrd;

    public HostedApp(string a_domain, string a_assemblyName)
    {
        DomainName = a_domain;
        AssemblyName = a_assemblyName;
        Ad = AppDomain.CreateDomain(a_domain);
    }

    public void Run()
    {
        AppThrd = new Thread(RunApp);
        AppThrd.Start();
    }

    private void RunApp()
    {
        try
        {
            Ad.ExecuteAssembly(AssemblyName);
        }
        catch(Exception _ex)
        {
            MessageBox.Show("Unhandled exception\n" + _ex);
        }
    }
}

Я попытался перенаправить Console.Out текущего процесса, предполагая, что если приложения совместно используют один и тот же процесс, будет один стандартный вывод.

Но он показывает только стандартный вывод appDomain по умолчанию.

Итак, чтобы подвести итог, мне нужно получить доступ к другому стандартному выводу приложения appDomain. Или, может быть, есть способ вызвать метод, расположенный в стандартном appDomain из «основного» appDomain?

Ответы на вопрос(1)

Ваш ответ на вопрос