我目前正在构建一个异步控制台应用程序,我在其中创建了类来处理应用程序的不同区域.
我创建了一个InputHandler类,我设想它将等待Console.ReadLine()输入.但是,你不能等待这样的功能(因为它不是异步),我目前的解决方案是:
private async Task<string> GetInputAsync() {
return Task.Run(() => Console.ReadLine())
}
Run Code Online (Sandbox Code Playgroud)
哪个运行得很好.但是,我的(有限的)理解是调用Task.Run将触发一个新的(并行?)线程.这违背了异步方法的目的,因为新线程现在被阻塞,直到Readline()返回正确?
我知道线程是一种昂贵的资源,所以我觉得非常浪费和hacky这样做.我也试过Console.In.ReadLineAsync(),但它显然是马车?(好像挂了).