我是 C# 新手,所以我很难理解一些概念,并且遇到了一段我不太理解的代码:
static void Main(string[] args)
{
Task.Run(async () => { await SomeClass.Initiate(new Configuration()); }).Wait();
while (true) ;
}
据我了解,这运行一个启动方法的任务。该方法运行,然后,一旦完成,它就会进入无限循环等待。感觉要么是代码没有意义,要么是我理解不对。
您可以将其分为几个部分:
async () => { await SomeClass.Initiate(new Configuration()); }
是一个 lambda 表达式,定义async
只是等待另一个方法的方法。然后这个 lambda 被传递给Task.Run
:
Task.Run(async () => { await SomeClass.Initiate(new Configuration()); })
Task.Run
在线程池线程上执行其代码。以便async
lambda 将在线程池线程上运行。Task.Run
返回一个Task
这代表着执行async
拉姆达。打电话后Task.Run
,代码调用Task.Wait
:
Task.Run(async () => { await SomeClass.Initiate(new Configuration()); }).Wait();
这将阻塞主控制台应用程序,直到异步 lambda 完全完成。
如果你想进一步了解它是如何分解的,下面的内容大致相同:
static async Task AnonymousMethodAsync()
{
await SomeClass.Initiate(new Configuration());
}
static void Main(string[] args)
{
var task = Task.Run(() => AnonymousMethodAsync());
task.Wait();
while (true) ;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)