C# バージョン7.1からエントリーポイントも非同期にできる
以前なら static async Task Main
はエントリーポイントとみなされずビルドエラーが発生しました。
C# 7.1
なら エントリーポイントを非同期処理にすることができます。
Main 関数が非同期にできる為、そのまま非同期メソッドを await で呼ぶことができます。
using System;
using System.Net.Http;
using System.Threading.Tasks;
namespace AsyncMainSample
{
class Program
{
static async Task Main(string[] args)
{
// Mian 関数で非同期メソッドを await で呼べる
string doc = await GetMSDocAsync();
Console.WriteLine(doc);
}
// 非同期メソッド
static async Task<string> GetMSDocAsync() =>
await new HttpClient().GetStringAsync(@"https://docs.microsoft.com/ja-jp/");
}
}
今までもAsyncMethod().GetAwaiter().GetResult();
と呼ぶことができましたがこっちのほうが綺麗です。
使うには C# の言語バージョンを7.1以上に設定する
非同期のメインメソッドがサポートされるのは C# 7.1
以上なので言語バージョンを7.1以上に設定する必要があります。
Visual Studio のビルドの詳細設定を開きます。
ソリューションエクスプローラー
> プロジェクトを右クリック
> プロパティ
> ビルド
> 詳細設定
言語バージョン
を C# 7.1
以上に設定します。
読んでいただきありがとうございました。