C# - await で「CS4008 void を待機することができません」エラーが発生する。

await で 実行したいメソッド(関数) の 戻り値が Task型 ではない場合、非同期実行できません。戻り値の型を void から Task に変更します。

エラーの発生するコード例
async void test()
{
    // エラー:CS4008 void を待機することができません
    await this.testAsync();
}

async void testAsync()
{
    await Task.CompletedTask;
}

エラーメッセージ

エラー CS4008 void を待機することができません
エラーが発生している様子
エラーが発生している様子

解決方法

戻り値の型を void から Task に変更します。呼ぶ側ではなく、呼ばれる側の関数です。

修正前のコード

async void test()
{
    // エラー:CS4008 void を待機することができません
    await this.testAsync();
}

async void testAsync()
{
    await Task.CompletedTask;
}

修正後のコード

async void test()
{
    await this.testAsync();
}

async Task testAsync()
{
    await Task.CompletedTask;
}

検証環境