我有“控制台”类型的 ac# 项目,它从父应用程序中开始进入它自己的应用程序域,并产生一个控制台窗口。但是,写入控制台的任何文本都不会显示。Console.ReadKey()
但是确实有效。有什么想法可能是错的吗?
注意:父进程的 Echo 显示在父进程的嵌入式控制台(不是 win32 控制台,而是某种 Directx GUI 小部件)中Console.Out
,并且System.Console.Out
不是“空”流。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using ParentApi;
namespace LSTest4
{
class Program
{
static void Main(string[] args)
{
Console.OpenStandardOutput();
ParentApi.Echo(System.Console.Out.ToString());
Console.Out.WriteLine("monkeys");
Console.WriteLine("app start");
Console.Write("lalala");
Console.ReadKey();
ParentApi.Echo("app start");
}
}
编辑:
经进一步调查:
有问题的代码被注入到另一个应用程序中,注入是敌对的,由“ParentApi”管理,似乎注入目标正在重新映射标准流。在这种情况下,最好的办法是以其他方式处理跟踪。我可能会使用 WCF 将跟踪输出推送到外部进程。