56

私は、C# で await async がどのように機能するかを理解しようとしていますが、1 つのことが非常に混乱しています。await キーワードを使用するメソッドは async でマークする必要があることを理解しています。私の理解では、 await キーワードのある行にヒットすると、その行の下のコードは実行されません。await 行のステートメントを実行するために非同期操作が開始され、実行を続行できる呼び出し元のメソッドに制御が返されます。

質問 # 1: この仮定は正しいですか、それとも await キーワードの下のコードがまだ実行されていますか?

次に、サービス メソッド async を呼び出し、その結果を返す必要があるとします。return ステートメントは await キーワードの下にあります。

質問 # 2: 非同期呼び出しが完了した後、またはその前に、return ステートメントがヒットするのはいつですか?

質問 # 3: サービス呼び出しの結果を使用したいのですが、結果が返されたときに呼び出し元のメソッドをヒットさせたいため、非同期操作は役に立ちません。これは、呼び出しを同期させる Result プロパティを使用して実行できることを理解しています。しかし、DB 操作で非同期を使用すると、ほとんどのアプリで実際に 80% の時間がかかるためです。

質問 4: DB 操作で非同期を使用するにはどうすればよいですか? それは可能で推奨されますか?

質問 5: 非同期操作が役立つシナリオはどれですか。どの API も理由もなく非同期操作を行っているように見えますか? または、非同期操作を使用するポイントを逃しましたか?

APIが理由なしに非同期メソッドを作成しているということは、メソッドが何かを返す必要があり、その計算が行われるまでどのように返すことができるかということです。結果は返されますか?

4

2 に答える 2