【问题标题】:Console redirect with Console.CursorLeft [duplicate]使用 Console.CursorLeft 进行控制台重定向 [重复]
【发布时间】:2012-11-11 08:58:38
【问题描述】:

可能重复:
How can I determine whether Console.Out has been redirected to a file?
How to detect if Console.In (stdin) has been redirected?

我们的系统目前正在使用CursorLeft 函数来覆盖打印到控制台窗口的最后内容:

Console.CursorLeft = 0;

这是必需的功能,因此我无法将其更改为每次只打印一个新行。

将控制台重定向到文本文件时,会出现IOException。如何让日志文件跳过显示这些输出或强制将它们全部写出来?

【问题讨论】:

    标签: c# console


    【解决方案1】:

    对我来说很明显控制台不同于文件。 例如,您可以在控制台中使用颜色,当您将输出重定向到文件时,这些颜色会丢失。 因此,不能保证重定向后所有控制台功能都可以保留。 我建议质疑该要求,因为它似乎不可行。

    无论如何这里是基于下面相同的 Win32API 的类似问题:"The handle is invalid" when running .net console via java

    这是来自 MSDN 的文章,其中包含有关控制台工作原理的一些信息(在页面底部):http://msdn.microsoft.com/en-us/library/system.console.aspx

    要考虑的另一件事是,尽管您可能无法解决此问题,但您绝对可以重新构建您的应用程序,这样您就可以使用一些缓冲类抽象与控制台的直接交互,该类会累积您想要的所有更改在虚拟缓冲区中创建单行(或多行),然后仅在您确定所有更改都已完成并且该行不再更改时才对 Console.WriteLine 进行一次调用。

    【讨论】:

      猜你喜欢
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      相关资源
      最近更新 更多