c# - 使用 Console.CursorLeft 进行控制台重定向

标签 c# console

<分区>

Possible Duplicate:
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。我怎样才能让日志文件跳过显示这些输出或强制它写出所有输出?

最佳答案

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

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

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

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

关于c# - 使用 Console.CursorLeft 进行控制台重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13521551/

相关文章:

c# - SmtpClient 无认证发送

c# - 密码屏蔽控制台应用程序

c# - 关于 OAUTH2 和自定义身份提供者的困惑

c# - Microsoft Edge 忽略内容处置响应 header 的 FileName 属性?

c# - 将 VB 翻译成 C#

C++ 动态定义函数

java - 使用 JCurses 从键盘读取而不按 "enter"

ruby-on-rails - 如何在 Fargate 容器中启动 rails 控制台

java控制台窗口没有出现

javascript - Chrome 的控制台自动完成