Кросс-приложениеДоменный доступ к 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?