[過去ログ] ふらっと C#,C♯,C#(初心者用) Part138 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
157
(1): (ワッチョイ c251-G00F) 2018/06/16(土)12:20 ID:omCaDuHT0(1/9) AAS
教えてください。
戻り値が async Task のメソッドで await を使わないと↓のような警告が出ます。

> CS1998 この非同期メソッドには 'await' 演算子がないため、同期的に実行されます。
> 'await' 演算子を使用して非ブロッキング API 呼び出しを待機するか、'await Task.Run(...)' を
> 使用してバックグラウンドのスレッドに対して CPU 主体の処理を実行することを検討してください。

独立したメソッドなら、await が必要ないなら async Task をやめて void にすればいいのですが、
仮想呼び出しなどの関係で戻り値を変更したくない場合の解決策に悩んでいます。
省5
160: (ワッチョイ c251-G00F) 2018/06/16(土)13:16 ID:omCaDuHT0(2/9) AAS
>>158
レスありがとうございます。やはり他に正しい方法はないのですね。
非同期が必要になるまでは同期実行できるのが async の効果だと思っていたので
非同期が全く必要ないときに async が使えないのは逆のような気がして
違和感が拭えないのですが、とりあえず [2] の方法でやっていこうと思います。

>>159
申し訳ないのですが、同期ついて理解不足で仰っていることが理解できないので
省1
163: (ワッチョイ c251-G00F) 2018/06/16(土)14:42 ID:omCaDuHT0(3/9) AAS
>>161
レスありがとうございます。せっかくなのですが、私もその方法はあまり良くないと思います。
ご存知でしたら失礼を許していただきたいのですが、以下の2つの効果は同じではないのです。
async Task X() => Thread.Sleep(1000);
async Task Y() => await Task.Run(() => Thread.Sleep(1000));

>>162
確かに await Task.CompletedTask をどこかに挟むだけなら
省7
165: (ワッチョイ c251-G00F) 2018/06/16(土)15:23 ID:omCaDuHT0(4/9) AAS
>>164
レスありがとうございます。
たかが警告を消すために実際のコードを書き換える必要があるのかという考えは
実にごもっともだと思います。
ただその場合、警告を抑制するだけでも意図は十分に伝わると思うのですが、
やはり警告はそのままにしてコメントなどで説明を行うべきなのでしょうか。
167
(2): (ワッチョイ c251-G00F) 2018/06/16(土)15:35 ID:omCaDuHT0(5/9) AAS
>>166
レスありがとうございます。やはり警告の抑制も選択肢になりますよね。
警告を抑制することに対する考え方は人それぞれということもあると思いますので、
その都度状況に応じた対処法を考えるのが一番でしょうか。

> っていうか、asyncなしで問題ない前提なら最初から何も悩む必要ないと思うんだけど...

申し訳ありません。これについてよく意味が理解できませんでした。
詳しくご説明していただけないでしょうか。
171: (ワッチョイ c251-G00F) 2018/06/16(土)17:13 ID:omCaDuHT0(6/9) AAS
>>167
ご説明ありがとうございます。 >>166 で仰っていた意味が理解できました。
async/await は糖衣構文なので確かにベースクラスなどで使用が強制されることはありませんが、
深く考えずに使えるところが糖衣構文のいいところですし、
async を使うメソッドに XxxAsync という名前をつけることが推奨されていることからも、
事実上 async/await を使うかどうかはベースクラスに依存していると言っていいと思います。
これを踏まえて、改めて >>166 にお返事したいと思います。
省10
172: (ワッチョイ c251-G00F) 2018/06/16(土)17:18 ID:omCaDuHT0(7/9) AAS
>>170
レスどうもありがとうございます。
このような返しばかりで情けないのですが、理解力が足りず仰っていることがよくわかりませんでした。
申し訳ありませんが詳しいご説明をお願いできないでしょうか。
175: (ワッチョイ c251-G00F) 2018/06/16(土)21:30 ID:omCaDuHT0(8/9) AAS
>>173
レスどうもありがとうございます。
同期処理と非同期処理の違いは、一般論としてはおっしゃるとおりだと思うのですが、
それが >>174 でご指摘いただいているような目的を達成する上で障害になっていて、
そのような問題を解消するために async/await 構文が作られたのではないでしょうか。
だとすると、同期処理と非同期処理の違いを理由に await なしの async を
否定することは本末転倒のように感じてしまうのですがいかがでしょうか。
省4
177: (ワッチョイ c251-G00F) 2018/06/16(土)22:10 ID:omCaDuHT0(9/9) AAS
>>176
メイン処理を止めたくないならポーリングやコールバックを明示的に記述する以外に
選択肢がないというように読めてしまったのですが、この部分に間違いはないでしょうか。
もしそうなら async/await 構文についてあまりお詳しくないようにお見受けしますので、
よろしければ一度お触りになってみてください。
非同期処理の大変さをご存知であればこそ、便利さを実感できるのではないかと思います。

(ちなみに、今の問題は非同期処理を行うことも可能なメソッドをオーバーライドする際に
省2
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.029s