- ふらっと C#,C♯,C#(初心者用) Part148
303 :デフォルトの名無しさん (ワッチョイ 1201-nSIs)[sage]:2020/09/28(月) 06:18:20.07 ID:ii9XSMYC0 - >>290です
>>296 コンテキスト・文脈という概念がまだ把握できてないのでそこが課題だと思ってます >>298 自分は独習C#という本をテキストにして勉強しています。 その中で、>>291のAと似たコードが記載されていて、 これを使ってasync/awaitの基礎が説明されています。 そこで、フォームアプリで真似してみたんです。 デッドロックについてはいろいろ調べてみて基本的な理屈は理解できました。 ただ、Aのコンソールアプリでデッドロックが起きない理由がわかりません。 コンソールアプリはループスレッドではないからとのご指摘が重要だと思っていますが まだ理解が浅くてモヤモヤしてます。 あと、 >まず、async指定されたメソッドは呼び出されるとメソッド全体を別スレッドとして 起動して・・・ の下りですが、スレッドが3つあると考えればいいのでしょうか? a.STAスレッド(2のスレッドを呼び出したスレッド) b.async指定されたメソッドを処理するスレッド c.client.GetStringAsync(url)を処理するスレッド これはAのコンソールアプリでも同じですか? bについては独習C#には書かれていなかったので aとbは同じスレッドだと思い込んでいました。 調べてみてよく分かったのですが、理解できていない概念が多すぎますね。 今の時点で安易に触ってしまうと変に誤った先入観を持ってしまいそうです この辺をわかりやすくしっかり説明している書籍等、ご存じないでしょうか? 結論としては 基本的にフォームアプリの中でWaitを使うな 使いたいならConfigureAwait(false)で回避しろ ということなのかなと思っています
| - ふらっと C#,C♯,C#(初心者用) Part148
304 :デフォルトの名無しさん (ワッチョイ 1201-nSIs)[sage]:2020/09/28(月) 07:01:50.95 ID:ii9XSMYC0 - >>303
修正 a.STAスレッド(bのスレッドを呼び出したスレッド)
| - ふらっと C#,C♯,C#(初心者用) Part148
318 :デフォルトの名無しさん (ワッチョイ 1201-nSIs)[sage]:2020/09/28(月) 11:42:34.18 ID:ii9XSMYC0 - >>309
ありがとうございます アマゾンレビューをチラ見したところ目的に合ってそうです >>311 とりあえず頑張ってみます
|
|