async で宣言された非同期メソッドの戻り値の型が Task または Task<TResult> の場合は、待機できます。メソッド内では、C# コードでタスクは返されませんが、Task<TResult> の場合は TResult の値が返されます。例えば:
private static async Task<int> AsyncDemo()
{
await Task.Delay(1000);
return 1;
}
結果の IL コードは、コンパイルされたステート マシンを開始した AsyncTaskMethodBuilder のタスクを返します。私の質問は、このタスクが実際に何を表しているかです。スレッドなどではなく、ステートマシンの実行を表すタスクだと思います。また、ステート マシンが終了したとき、または Exception が発生したときに Faulted 状態に設定されたときに、タスクが完了すると仮定します。明確にしていただければ幸いです。