2

c# 5 の非同期関数が少なくとも 1 つ待機する必要がある理由を誰か説明できますか? 明確な理由/説明が見つかりません。

必須とは、非同期関数の内部に await 呼び出しがない場合にコンパイラが警告するが、コンパイル エラーをスローしないことを意味します。

この回答から:

同様に、async としてマークされたメソッドには、少なくとも 1 つの await が必要です。待機中、ランタイムは現在のスレッドの状態とコール スタックを保存し、非同期呼び出しを行い、ランタイムのメッセージ ループに戻り、次のメッセージを処理してアプリの応答性を維持します。非同期操作が完了すると、次のスケジューリングの機会に、非同期操作を開始するための呼び出しスタックがプッシュバックされ、呼び出しが同期であったかのように続行されます。

しかし、msdn から:

メソッドに await 式またはステートメントが含まれていない場合、メソッドは同期的に実行されます。コンパイラの警告は、await を含まない非同期メソッドについて警告します。これは、その状況がエラーを示している可能性があるためです。

これが単なる推奨される使用方法ではなく、コンパイラの警告であることに値するエラーの種類は何ですか?

4

1 に答える 1