私は新しい asyncawait
キーワードについて読んでいて、それは素晴らしいように聞こえますが、これまでに見たどの紹介ビデオでも答えを見つけることができなかった重要な質問が 1 つあります (ホワイトペーパーも読みました)。ちょっと前)。
await
メイン UI スレッドのネストされた関数で呼び出しがあるとします。この時点でスレッドはどうなりますか?制御はメッセージ ループに戻り、UI スレッドは自由に他の入力を処理できますか?
待機中のタスクが完了すると、スタック全体がメッセージ キューにプッシュされ、ネストされた各関数を介して制御が返されますか?それとも、ここで何か別のことが完全に発生していますか?
第二に (注意を喚起している間)、非同期メソッドに というラベルを付ける必要がある理由がよくわかりませんasync
。非同期で実行できるメソッドはありませんか? メソッドを非同期で実行したいが、 async キーワードがない場合はどうすればよいですか? 簡単に実行する方法はありますか?
乾杯。:)
編集: 確かに、サンプルコードをコンパイルできれば、おそらく自分でそれを理解できるでしょうが、何らかの理由でブロックに遭遇しています。私が本当に知りたいのは、継続がどの程度継続するかです...コールスタック全体をフリーズして、タスクが完了したときに再開しますか、それともそれまでに戻るだけですか? 継続をサポートするために、関数自体を非同期としてマークする必要がありますか、それとも (最初に尋ねたように) コール スタック全体を継続しますか?
コール スタック全体がフリーズしない場合、async await が非非同期呼び出し関数にヒットするとどうなりますか? そこでブロックしますか?それはawaitのポイントを打ち負かしませんか?ここで私が理解していないことがわかると思います.誰かが記入してくれることを願っています.