>>290
多分非同期処理って調べるとasyncの例ばかりで自分で戻り制御する方法がよく
分からなくてTaskクラスでWaitすれば出来るとかって結論に達したんでないかと
思うのだけど・・・
まず、async指定されたメソッドは呼び出されるとメソッド全体を別スレッドとして
起動して処理を元のスレッド(この場合STAスレッド)に戻します
asyncメソッドの中でawaitを指定すると、メソッドの内容に関係なく元のスレッドに
戻るのは変わらないですが、asyncメソッドの中でawaitで指定されたメソッドが
終了するまでasyncメソッドのスレッドだけが待ち状態になり、awaitから返って
くるとawait以降を実行しasyncメソッドの最後まで行くとasyncメソッドのスレッド
だけが終了されます
検証してないので予想なのですが、Taskクラスで管理するスレッドを起動して
いない(Task.Run)状態でWaitをかけるとSTAスレッドを待つためにsleepして
しまいますがSTAスレッドはループスレッドなので当然いつまで待っても終了
しません
asyncスレッドではawaitの処理が終わって復帰しようとしても元になるSTA
スレッドがsleep状態なので、こちらもawaitから返ってこないみたいなことが
起こっているのだと思います
2のコンソールアプリの場合にはループスレッドではないのでMainの処理が
終了した時点で続きが動くのではないかと
3は正しい使い方で、STAスレッドは動かしたままbutton1_Clickメソッドが別スレッドで
動作する際にclient.GetStringAsyncの処理を待っているので普通に動作します
button1_Clickの中で待つのであればasyncメソッドを作る意味がないですし、async
メソッドで裏で動かすのであればbutton1_Clickで待ってはいけないので3の様な
形で実装するか、asyncメソッドの返却値をただのstringにして、textBox1.Textに
メソッドの返却値が入る形式に変える(こっちは試してないので嘘かも)のが正解じゃ
ないかな
ふらっと C#,C♯,C#(初心者用) Part148
■ このスレッドは過去ログ倉庫に格納されています
298デフォルトの名無しさん (ワッチョイ d684-b+lb)
2020/09/27(日) 16:39:54.69ID:BMd/NSoW0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【北区小学校火災】女性教師「電気ストーブ近くで洗濯物を乾かしていた」 失火とみて捜査 燃えた残骸に“繊維片”付着 ★3 [Ailuropoda melanoleuca★]
- 「ケンタッキーは白米と合わない、一緒に食わない」キレる夫に妻がネットで問いかけ反応様々「唐揚げ定食の感覚」「私も出さない」 [muffin★]
- 【W杯】元ブラジル代表ロナウド氏「日本には簡単に勝てる」決勝T1回戦で対戦可能性…避けたいのは「オランダ」 [首都圏の虎★]
- 仏南西部で44.3℃ 全土で死者40人、2歳と4歳児も犠牲に 英でも39℃予想 [首都圏の虎★]
- 歌舞伎町の有名ホスト4人 アメリカ入国を拒否され強制送還 「君達の職業では純粋な旅行として認められないから帰れ」と言われる [muffin★]
- 「大変無礼な法案」衆議院「定数削減」に野党5党は反対で一致 [首都圏の虎★]
- 玉木雄一郎に弄ばれて自殺した高橋茉莉(27)、後を追って母親も自殺。高市よりヤバいだろ😰 [485187932]
- 【高市悲報】登山家「ハァハァ・・・エベレスト(8849m)に登頂したぞ!」僕「ふーん(離陸して3分で高度12000mに到達)」 [616817505]
- 【高市悲報】FIFAワールドカップスポンサーさん、日本企業0wwwwwwww変わりに父さんin [668024367]
- 東京都北区の小学校火災、女性教員「電気ストーブで洗濯物を乾かしていた」 [377482965]
- 【悲報】タマキン「嫌悪感が生まれる😤甘えるな!」沖縄での高市へのヤジに苦言 [359965264]
- VIPにいる自称パソコンの先生「AIに聞けばスクリプトくらいすぐ作ってくれるよ」