可能重复:
如何确定Console.Out是否已重定向到文件?
如何检测Console.In(stdin)是否已被重定向?
我们的系统目前正在使用一个CursorLeft函数来写入打印到控制台窗口的最后一件事:
Console.CursorLeft = 0;
Run Code Online (Sandbox Code Playgroud)
这是必需的功能,因此我不能将其更改为每次只打印一个新行.
将控制台重定向到文本文件时,IOException会发生.如何让日志文件跳过显示这些输出或强制它写出所有输出?
对我来说很明显控制台与文件不同。例如,您可以在控制台中使用颜色,当您将输出重定向到文件时,这些颜色将会丢失。因此,不能保证重定向后可以保留所有控制台功能。我建议质疑该要求,因为它似乎不可行。
无论如何,这里有一个基于相同 Win32API 的类似问题:通过 java 运行 .net 控制台时“句柄无效”
以下是来自 MSDN 的文章,其中包含有关控制台如何工作的一些信息(在页面底部):http://msdn.microsoft.com/en-us/library/system.console.aspx
另一件需要考虑的事情是,虽然您可能无法解决这个问题,但您绝对可以重新架构您的应用程序,以便您使用一些缓冲区类抽象与控制台的直接交互,该缓冲区类累积了您想要进行的所有更改虚拟缓冲区中的一行(或多行),然后当您确定所有更改都已完成并且该行不会再更改时,仅对 Console.WriteLine 进行一次调用。
| 归档时间: |
|
| 查看次数: |
1169 次 |
| 最近记录: |