2017-02-02 1 views
1

Wie der Titel sagt, wenn ich mein Konsolenfenster auf eine bestimmte Formgröße einstelle, wird beim Aufruf Console.Clear() ein IOException geworfen, und ich bin mir nicht sicher warum. Hier ist mein Beispielcode:IOException tritt auf, wenn das Konsolenfenster in verkleinertem Zustand gelöscht wird

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

Und hier ist ein nettes kleines GIF zu zeigen, wie diese zu reproduzieren:

enter image description here

Nun, ich habe keine Ahnung, warum dies geschieht, wenn es angenommen hat, um geschehen, und geschweige denn, wie man dies beheben/verhindern kann. Kann mir jemand erklären? Ich bin sehr neugierig!

Vielen Dank im Voraus.

+0

Meine Konsolenfenster wird nicht lassen Sie mich hoch auf die 0-Linie nach unten gehen, dass Ihnen der Fall ist, so mein BARF tut - die Tatsache, Ihr der Grund nicht wäre . – BugFinder

+0

@BugFinder Nur neugierig, auf welchem ​​OS bist du? – Metoniem

+0

Ich bin auf Sieg 7 .. – BugFinder

Antwort

0

Das Problem ist, dass Sie versuchen, eine Konsole zu löschen, die eine Dimension auf 0 hat. Ich denke, dass clear versucht, den Cursor auf die obere linke Position zu setzen und wie es nicht möglich ist, löst diese Ausnahme aus.

können Sie lösen nur einen Scheck vor Console.Clear Zugabe:

static void Main() 
{ 
    for (int i = 0; ;) 
    { 
     Console.Write(i++); 
     Thread.Sleep(250); 
     if (Console.WindowHeight>0 && Console.WindowWidth>0) 
      Console.Clear(); 
    } 
} 
+0

Hmm, warte, ich werde versuchen, dies mit 'Console.SetCursorPosition()' dann .. zu reproduzieren. EDIT: Es scheint, dass Sie Recht haben, passiert es, wenn Sie den Cursor pos manuell auf 0,0 setzen. Ich werde diese Antwort akzeptieren, da mein Problem gelöst zu sein scheint! Vielen Dank :-) – Metoniem

Verwandte Themen