今天遇到个需求,在C#控制台做倒计时,需要打印出倒计时剩余时间,且倒计时部分只显示在一行要怎么做呢?
C#在console中可以设置控制台的光标位置,用方法Console.SetCursorPosition().
所以只显示在一行的倒计时,就在输出前记录当前Console控制台的光标位置.上代码:
/// <summary>
/// 控制台休眠,并打印出剩余时间
/// </summary>
/// <param name="seconds">休眠的时间</param>
private void ThreadSleep(int seconds)
{
//子线程输出出剩余时间
Task.Factory.StartNew(() =>
{
var timeLeft = seconds;
var top = Console.CursorTop;
var left = Console.CursorLeft;
COUNT:
if (timeLeft > 0)
{
Console.SetCursorPosition(left, top);
Console.WriteLine($"{DateTime.Now.ToString("MM-dd HH:mm:ss")} => 线程休眠{--timeLeft}/{seconds}秒后继续...");
System.Threading.Thread.Sleep(1000);
goto COUNT;
}
});
//主线程进入休眠
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(seconds));
}
效果如下:
以上就是【C#控制台倒计时,打印剩余时间,并显示在一行】的全部内容了,欢迎留言评论进行交流!