这是一个有两个线程的程序;一个用于输出,一个用于输入。(其中 _ 是控制台光标)
Please enter a number:
12_
当您输入 12 时,会生成输出,清除当前行并覆盖它,所以会发生这种情况:
Please enter a number:
Output
_
我怎样才能让它把你仍在输入的 12 移到下一行,这样你就不必重新输入它了?
提前致谢。
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
Program prog = new Program();
Thread t1 = new Thread(prog.getInput);
t1.Start();
prog.otherThread();
}
public void otherThread()
{
while (true)
{
System.Threading.Thread.Sleep(3000);
ClearCurrentConsoleLine();
Console.WriteLine("Output");
}
}
public void getInput()
{
while (true)
{
string msg;
msg = Console.ReadLine();
}
}
public static void ClearCurrentConsoleLine()
{
int currentLineCursor = Console.CursorTop;
Console.SetCursorPosition(0, Console.CursorTop);
for (int i = 0; i < Console.WindowWidth; i++)
{
Console.Write(" ");
}
Console.SetCursorPosition(0, currentLineCursor);
}
}
如您所见,当您输入“Hello”并且不输入时,3 秒后它将被“Output”覆盖。我想在它被覆盖之前将“Hello”和输入移动到第二行。