2017-02-02 3 views
1

Как говорится в названии, когда я изменяю размер окна консоли до определенной формы, при вызове Console.Clear() будет выбрано IOException, и я не уверен, почему. Вот мой пример кода:IOException возникает при очистке окна консоли в измененном состоянии

using System; 
using System.Threading; 
class Program 
{ 
    static void Main() 
    { 
     for (int i = 0; ;) 
     { 
      Console.Write(i++); 
      Thread.Sleep(250); 
      Console.Clear(); 
     } 
    } 
} 

А вот миленькая GIF, чтобы продемонстрировать, как воспроизвести это:

enter image description here

Теперь, я понятия не имею, почему это происходит, если он должен и не говоря уже о том, как исправить/предотвратить это. Может ли кто-нибудь объяснить? Мне очень любопытно!

Заранее спасибо.

+0

Мое окно консоли обыкновение позвольте мне спуститься к 0 линии высоко, что ваша делает, так что мое оленья кожа блевать - то твое ли было бы причиной , – BugFinder

+0

@BugFinder Просто любопытно, на какой ОС вы? – Metoniem

+0

Я нахожусь на выигрыше 7 .. – BugFinder

ответ

0

Проблема заключается в том, что вы пытаетесь очистить консоль с одним измерением до 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(); 
    } 
} 
+0

Хмм, держись, я попытаюсь воспроизвести это с помощью 'Console.SetCursorPosition()' then .. EDIT: Кажется, вы правы, это происходит при установке курсора pos на 0,0 вручную тоже .. Я приму этот ответ, потому что моя проблема, похоже, решена! Благодаря :-) – Metoniem

 Смежные вопросы

  • Нет связанных вопросов^_^