众所周知,C#7允许将Main()函数异步化。
它有哪些优势呢?在什么情况下可以使用async Main而不是普通的Main函数呢?
众所周知,C#7允许将Main()函数异步化。
它有哪些优势呢?在什么情况下可以使用async Main而不是普通的Main函数呢?
实际上是C# 7.1引入了async main。
其目的是为了处理在Main
方法直接调用一个或多个异步方法的情况。在C# 7.1之前,您必须在主方法中引入某种程度的仪式感,例如通过SomeAsyncMethod().GetAwaiter().GetResult()
来调用这些异步方法。
通过将Main
标记为async
,可以简化这种仪式感,例如:
static void Main(string[] args) => MainAsync(args).GetAwaiter().GetResult();
static async Task MainAsync(string[] args)
{
await ...
}
成为:
static async Task Main(string[] args)
{
await ...
}
有关使用此功能的良好撰写,请参见C# 7系列,第2部分:Async Main。