【问题标题】:C# - How to show process progress percentage & print a changing string on a Console App?C# - 如何在控制台应用程序上显示进程进度百分比并打印更改字符串?
【发布时间】:2021-09-03 13:42:48
【问题描述】:

我想知道是否有办法在 C# 代码的控制台应用程序中做两件事。

第一个是显示被调用进程的进度百分比,以便用户或多或少地知道经过的进度以及他/她需要等待多少。

第二个,打印三个不断变化的字符串,每个字符串循环,直到过程结束。

这些是我要打印的字符串,一个接一个,但在控制台应用程序屏幕的同一行:

string Please_Wait_One_Dot = "Please wait.";
string Please_Wait_Two_Dots = "Please wait..";
string Please_Wait_Three_Dots = "Please wait...";

Console.WriteLine("\n{0}", Please_Wait_One_Dot);
Console.WriteLine("\n{0}", Please_Wait_Two_Dots);
Console.WriteLine("\n{0}", Please_Wait_Three_Dots);

// This Prints those Strings but on Different Lines without any Loop.

基本上,我想做的是打印一些显示消息的文本,但是点数从 1 变为 2,从 2 变为 3,然后又变为 1,循环此循环直到选定的操作由用户完成。

【问题讨论】:

  • 您是在问如何编写 for/while 循环?
  • 你在想象某种动画吗?就像,这三个点在控制台窗口的同一位置相互覆盖?我的建议:不要这样做。让控制台应用程序只输出最终结果,就像命令行工具一样。如果通过管道传输到文件或其他非交互式数据接收器,控制台输出应该很有用。
  • 是的,我想做这样的事情,但没有播放任何动画,只是点覆盖在同一位置,处理完成后,它会显示结果。
  • 控制台类有一个SetCursorPosition方法
  • 一会儿去看看,谢谢!

标签: c# c#-5.0


【解决方案1】:

未测试...用作伪代码...

Console.write("Please_Wait");
int count = 0;
do
{
   if (count < 3)  
   {
      Console.Write(".");  // add a dot
      count++;
   }
   else
   {
     Console.Write("\b\b\b");  // erase all dots
     count = 0;                //resume   
   } 
   
} while(not_done)

【讨论】:

  • 非常感谢!我会测试它并告诉你它是否有效。
  • 知道我没有包含任何时间/延迟...所以这会很快触发...可能很难在屏幕上看到...
  • 顺便问一下,变量 not_done 的类型和它的等价物是什么?它说它不存在。
  • 对您的语句“循环此循环直到用户选择的操作最终完成”的 pysuedo 引用。这只需要用户执行操作时解析的布尔表达式..
猜你喜欢
  • 2010-11-25
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多