我正在构建一个异步控制台应用程序,在其中我创建了处理应用程序不同区域的类。
我创建了一个InputHandler类,希望它能等待Console.ReadLine()输入。然而,由于它不是异步函数,无法等待该函数。目前的解决方案是简单地:
我创建了一个InputHandler类,希望它能等待Console.ReadLine()输入。然而,由于它不是异步函数,无法等待该函数。目前的解决方案是简单地:
private async Task<string> GetInputAsync() {
return Task.Run(() => Console.ReadLine())
}
代码运行得非常好。然而,我的(有限的)理解是调用Task.Run会触发一个新的(并行?)线程。这会破坏异步方法的目的,因为现在该新线程被阻塞直到Readline()返回了对吗?
我知道线程是昂贵的资源,所以我感觉这样做既浪费又不专业。我也尝试过使用Console.In.ReadLineAsync()但它显然有缺陷吗?(它似乎会挂起)。
return await Task.Run( ( ) => Console.ReadLine( ) );
吗?我按照你的方式尝试了一下,但是编译器报错了... - Tarc