在使用 C# 构建 Windows 控制台应用程序时,是否可以在等待读取行时更新控制台中的行?
我当前的代码是:
do
{
Console.Clear();
Console.WriteLine("RA: " + scope.RightAscension);
Console.WriteLine("Dec: " + scope.Declination);
Console.WriteLine("Status: " + scope.Slewing);
System.Threading.Thread.Sleep(1000);
} while (true);
最佳答案
是的。您可以在 Console.ReadLine 上阻塞时从单独的线程写入控制台。
话虽如此,这会引起混淆。在您的例子中,您将清除用户在行的中途键入的内容(通过 Console.Clear()),并显着移动光标位置。
编辑:这是一个说明这一点的例子:
namespace ConsoleApplication1
{
using System;
using System.Threading;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Starting");
ThreadPool.QueueUserWorkItem(
cb =>
{
int i = 1;
while (true)
{
Console.WriteLine("Background {0}", i++);
Thread.Sleep(1000);
}
});
Console.WriteLine("Blocking");
Console.WriteLine("Press Enter to exit...");
Console.ReadLine();
}
}
}
如果您运行它,您会看到控制台在 ReadLine 上等待,但后台线程仍在打印。
关于c# - 如何在等待 ReadLine 时更新 C# Windows 控制台应用程序中的当前行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3907679/