2009-09-04 12 views
27

Tengo una aplicación de consola que realiza un proceso largo.que muestra el porcentaje en la aplicación de consola .net

Estoy imprimiendo el porcentaje completado en una nueva línea, por cada 1% completo.

¿Cómo puedo hacer que el programa imprima el porcentaje completado en la misma ubicación en la ventana de la consola?

+0

Véase también esta pregunta relacionada: http://stackoverflow.com/questions/888533/how-can-i-update-the-current-line-in-ac-windows -console-app –

+0

Creo que el método de retroceso es quizás el más bonito (y el más portátil), aunque requeriría un poco más de trabajo. –

Respuesta

66

Imprimir \r para llegar de nuevo al comienzo de la línea (pero no se imprimen una nueva línea!)

Por ejemplo:

using System; 
using System.Threading; 

class Test 
{ 
    static void Main() 
    { 
     for (int i=0; i <= 100; i++) 
     { 
      Console.Write("\r{0}%", i); 
      Thread.Sleep(50); 
     } 
    } 
} 
+7

Sí, esta es la forma más fácil de hacerlo. Asegúrese de (si lo está utilizando para cadenas de longitud variable) que recuerda sobrescribir con espacios al final de las líneas. p.ej. reemplazando "99% completado" con "Hecho" mostrará la línea "Done! omplete" - no ideal. :) – ZombieSheep

+0

Tiene un error de apagado por uno: P –

+0

Jon Skeet: Lo siento, parece que el desbordamiento de la pila no me permitirá deshacer la edición de ronnies en su publicación correctamente. Por favor, inténtalo tú mismo. –

16

Usted puede utilizar:

Console.SetCursorPosition(); 

Para establecer la posición de manera apropiada.

así:

Console.Write("Hello : "); 
for(int k = 0; k <= 100; k++){ 
    Console.SetCursorPosition(8, 0); 
    Console.Write("{0}%", k); 
    System.Threading.Thread.Sleep(50); 
} 

Console.Read(); 
Cuestiones relacionadas