8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

メイン関数(エントリーポイント)を非同期にする

Last updated at Posted at 2018-03-29

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 以上に設定します。

image.png

読んでいただきありがとうございました。

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?