C#控制台在使用太多Writeline时会发生溢出吗?

8
如果我有一个程序,每秒钟执行多次Console.Writeline,并且该程序长时间运行,控制台是否会因为太多的行而溢出?我只是想知道它是否最终会抛出IO异常或者Console.Writelines的数量是几乎无限的。

你提出这个问题一定有原因,那是什么呢?人们不会随意提问。 - Security Hound
1
这并不是与你的问题相关,但值得一提的是,除非必要,否则每秒使用Console.Writeline可能不是一个好的实践。向控制台写入数据会带来很大的I/O成本,这实际上可能会减慢程序的运行速度。 - KingCronus
3个回答

22
不会溢出。如果您检查命令窗口的快捷方式的选项卡,您将看到一个缓冲区大小选项。这指定将存储的最大行数。旧的行将被删除。
如Scott在下面的评论中建议的那样,您可以使用Console.BufferHeight从代码中访问此设置。默认值(当我在我的开发PC上测试时)为300。允许的最大值是32766Int16.MaxValue - 1)。

4
或者只需检查/设置Console.BufferHeight - Scott Chamberlain

4

控制台有一个保留行数的缓冲区,在cmd.exe属性中可以进行设置:

Cmd.exe properties

因此,在输出300行后,它将忘记第1行输出的内容。


1

最大允许值为32766(已更正);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接