有一个命令通常会使程序等待。现在我知道如何使程序等待同时冻结所有输入,但这不是我想要实现的目标。我正在创建一个简单的Windows控制台应用程序,只是为了启动我的事情。
String name;
Console.WriteLine("What is your name?");
name = Console.ReadLine();
Console.WriteLine("Hello, {0}", name);
现在我想让它等待,同时也允许任何输入,这样我就可以运行其他东西,但也可以让它实际上让它说Hello, (Insert Name Here)
另外,如前所述我非常新,请尝试解释您的答案,谢谢!
答案 0 :(得分:0)
在您正在使用的ReadLine之外等待用户输入,Thread.Sleep如下所示是停止应用程序X时间等待执行完成或用户准备就绪的一种基本方法。 Thread.Sleep在更复杂的应用程序中阻止执行:
Thread.Sleep(2000);
进入高级方法,您可以使用异步编程概念并使用Task.Delay。这不会阻塞类似睡眠的线程,这意味着您可以使用异步编程模型使用单个线程执行此操作。这个示例代码创建了一个新方法,说它是异步并将其定义为一个任务,它基本上是一个工作单元,同样是更高级的概念明智,但只是为了给你一个高层次的想法/概述。
async Task TaskDelay()
{
await Task.Delay(2000);
}
private async void Test()
{
// Console.WriteLine etc. etc
await PutTaskDelay();
MessageBox.Show("Hello, I'm done waiting.");
}
答案 1 :(得分:-1)
我相信问题是:
如何在主线程中等待用户输入,同时在后台处理其他任务?
class Program
{
static void Main(string[] args)
{
AsynchronousTask();
Console.WriteLine("What is your name?");
var name = Console.ReadLine();
Console.WriteLine("Hello, {0}", name);
Console.ReadLine();
}
private static async void AsynchronousTask()
{
Task.Run(() =>
{
while (true)
{
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("Async tas is running in the background.");
Console.ForegroundColor = ConsoleColor.White;
Thread.Sleep(1000); //this is just to slowdown background thread
}
});
}
}
虽然这个例子非常基础,但它展示了如何在后台运行一些代码。您可能希望探索的主题称为Asynchronous Programing