有异步Main有什么意义?

时间:2017-09-14 12:26:10

标签: async-await c#-7.0

众所周知,C#7允许使Main()函数异步。

它有什么优势?出于什么目的,您可以使用异步Main而不是普通的?

1 个答案:

答案 0 :(得分:20)

实际上是C#7.1引入了异步main。

它的目的是在Main方法直接调用一个或多个异步方法的情况下。在C#7.1之前,您必须为该主要方法引入一定程度的仪式,例如必须通过SomeAsyncMethiod().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 Series, Part 2: Async Main