在调整大小状态下清除控制台 window 时发生 IOException
IOException occurs when clearing console window in resized state
正如标题所说,当我将控制台 window 调整为特定形状时,调用 Console.Clear()
时会抛出 IOException
,我不确定为什么。这是我的示例代码:
using System;
using System.Threading;
class Program
{
static void Main()
{
for (int i = 0; ;)
{
Console.Write(i++);
Thread.Sleep(250);
Console.Clear();
}
}
}
这里有一个很好的小 GIF 来演示如何重现:
现在,我不知道为什么会发生这种情况,是否应该发生,更不用说如何 fix/prevent 了。谁能解释一下?我很好奇!
提前致谢。
问题是您正在尝试清除一个维度为 0 的控制台。我猜想清除是试图将光标放在左上角的位置,但由于它不能,它会抛出该异常。
你可以在 Console.Clear
:
之前添加一个检查来解决
static void Main()
{
for (int i = 0; ;)
{
Console.Write(i++);
Thread.Sleep(250);
if (Console.WindowHeight>0 && Console.WindowWidth>0)
Console.Clear();
}
}
正如标题所说,当我将控制台 window 调整为特定形状时,调用 Console.Clear()
时会抛出 IOException
,我不确定为什么。这是我的示例代码:
using System;
using System.Threading;
class Program
{
static void Main()
{
for (int i = 0; ;)
{
Console.Write(i++);
Thread.Sleep(250);
Console.Clear();
}
}
}
这里有一个很好的小 GIF 来演示如何重现:
现在,我不知道为什么会发生这种情况,是否应该发生,更不用说如何 fix/prevent 了。谁能解释一下?我很好奇!
提前致谢。
问题是您正在尝试清除一个维度为 0 的控制台。我猜想清除是试图将光标放在左上角的位置,但由于它不能,它会抛出该异常。
你可以在 Console.Clear
:
static void Main()
{
for (int i = 0; ;)
{
Console.Write(i++);
Thread.Sleep(250);
if (Console.WindowHeight>0 && Console.WindowWidth>0)
Console.Clear();
}
}