1 名前:名無C mailto:sage [2019/03/07(木) 06:35:41.12 ID:6L3KEJfe0.net] !extend:checked:vvvvv:1000:512 次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為) 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■関連スレ C#, C♯, C#相談室 Part93 mevius.5ch.net/test/read.cgi/tech/1492818720/ ■前スレ ふらっと C#,C♯,C#(初心者用) Part141 mevius.5ch.net/test/read.cgi/tech/1544839627/ ■コードを貼る場合は↓を使いましょう。 ideone.com/ https://dotnetfiddle.net/ ■情報源 https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index https://docs.microsoft.com/en-us/dotnet/standard/class-libraries referencesource.microsoft.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
421 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 22:27:07.32 ID:i0tIRf8t0.net] listOfObject.RemoveAll(obj => { try { ・・・・・・なんか処理 return false; } catch { return true; } });
422 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 00:02:36.27 ID:/zNBD6gY0.net] リストに追加前にtry処理したらダメなん? それができないなら俺も415のやり方が良い
423 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 00:10:17.26 ID:4fcRoJkza.net] public class MyUtil { public static bool Try(Action a) { try { a?.Invoke(); return true; } catch { return false; } }} var b = a.Where(x => MyUtil.Try(() => ThrowableMethod(x))) .ToList();
424 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 06:45:01.92 ID:eu9xvtsyM.net] >>408 ガッ
425 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 06:45:18.46 ID:eu9xvtsyM.net] >>409 ガッ
426 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 08:09:20.70 ID:u/QGNgma0.net] このスレ的にはぬるぽではなくぬるりなのか。エロいな。
427 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 08:43:35.43 ID:ShWYWHRt0.net] 配列のソートのアルゴリズムが難しくて覚えられないんですが 簡単な書き方はりますか?
428 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 08:52:13.85 ID:tgvbScEyM.net] >>421 プログラミングには適性があります。 貴方には向いていません。
429 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 09:08:29.42 ID:Q85hwvCt0.net] >>410 foreach(var o in listOfObject){を foreach(var o in listOfObject.ToArray()){ と配列にコピーしてから実行するのが定石です そのループの中では既に列挙は終わっているから listOfObjectにAddしてもRemoveしても例外は発生しないし列挙の順番にも影響を与えません
430 名前:デフォルトの名無しさん [2019/04/20(土) 09:12:26.10 ID:Q8Lkjfvy0.net] >>421 一度リストで書いて、配列だとどう書くだろう?と考える。 アルゴリズムって基本リスト前提だからね。
431 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 09:15:16.95 ID:dmSDGLr5a.net] >>424 いやソートアルゴリズムの殆どは特定のインデックスに対するランダムアクセスにO(N)を仮定するから配列前提だぞ
432 名前:425 mailto:sage [2019/04/20(土) 09:15:47.20 ID:dmSDGLr5a.net] 間違えたO(1)
433 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 12:09:52.47 ID:IppyQHdna.net] >>421 今時そんなの覚える必要あんまりない気もするけど、 試験勉強ならがんばって覚えるしかないね >>423 そもそも列挙と同時に削除をするって発想が筋悪。 別に列挙後ゆっくり削除すりゃあよい訳で、>>413 がやってるように2つを分離する方が 考え方として自然で分かりやすいと思うけどね
434 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 12:52:51.24 ID:XrXcMVKPd.net] >>415 が一番シンプルだな
435 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 13:49:32.83 ID:ajzSwZvNd.net] 処理と例外が出たものを除去は別の仕事だから処理も分離してるほうが好き
436 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 13:51:03.66 ID:4fcRoJkza.net] そもそもフィルタかけて何に使うんだ?
437 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 13:53:51.78 ID:LQSO4VHxd.net] >>415 が質問者のしたいことにドンピシャなのに初心者スレだからラムダ式にアレルギーある奴が多いのかな
438 名前:デフォルトの名無しさん [2019/04/20(土) 14:01:01.21 ID:bN8wmmjE0.net] 一番まともな解答にはレス付けないのが2ちゃん式
439 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 14:06:22.07 ID:axr9T2Wu0.net] >>431 >>410 の処理の目的が条件に合わない要素の削除なら>>415 がシンプルで良いけど、 全ての要素に処理をするのが目的で削除はおまけって場合は、>>415 だと本来の目的が分かり辛い。
440 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 14:19:22.63 ID:rcvSJkam0.net] まず、2分探索を、2分ヒープで作れば? O(log N) 2^10 = 1,024 だから、千のデータを、10回で探索できる。 2^20 = 百万 のデータは、20回! リストは、次の要素しかわからないから、ランダムアクセスは、O(N) になる。 例えば、1から5を見つけるのに、1,2,3,4,5 と、リンクをたどらないといけない O(1)にするには、アドレスは計算式で求められるものだけ。 各要素が4バイト使うなら、1が100番地として、5は116番地みたいに
441 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 16:56:48.87 ID:ShWYWHRt0.net] >>427 覚える必要ないんですか…List型のソートメソッドを使っていても後々問題にならないですかね
442 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 17:40:05.04 ID:tqoqa3JD0.net] >>435 基本的なデータ構造とアルゴリズムは一通り理解して自分で書けるようになっておくといいぞ。 標準的な物はライブラリ等で用意されているから実際に業務等でコードを書くときはそれを使うが、独自の問題の解法を自分で考える際に、適切な速度や使用リソース量と工数の兼ね合いで良い方法を選択するには、基本は一通り押さえておく必要があるよ。
443 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 20:18:25.55 ID:zIfu5btc0.net] 必要な時に必要なものを覚えるだけでOK 最初から全部覚えようとしなくてもいいよ
444 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 20:23:09.94 ID:qqngOIWj0.net] ソートに関しては基本情報処理技術者試験の教科書でも読めばいいんじゃないの
445 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 21:14:17.27 ID:f5BR4Kwsa.net] ソートは自分なりに考えてlコードを書いてみてその後にいろいろ学ぶと勉強しやすい
446 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 08:02:20.34 ID:qTT7Abroa.net] 自前で書くソート処理と、.NET Frameworkに実装されてる(Microsoftのプロフェッショナルが実装した)ソート処理、 どっちがより高速でバグが少ないと思う? https://referencesource.microsoft.com/#mscorlib/system/array.cs,d076876f5fbf4eec ↑ここから先に書かれている処理よりも優れたソート処理を自分で書けるならともかく、 そうでなければおとなしく出来合いのソート処理を利用するほうが無難だと思うけど
447 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 09:21:47.18 ID:enjRZRrv0.net] >>440 出来合いのソート処理を利用するなとか誰か言ってんの?
448 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 09:22:37.85 ID:F9kXeXwV0.net] 独習3版読んでないとーしろはqueueも実装できないし、回帰とかも理解しないんだろ。
449 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 09:39:42.10 ID:+WROkW6ha.net] >>440 初心者がソートを勉強しないと自分の書いたコードがなぜ遅いかわからない ソートが魔法か何かで何でも一瞬で並び替えられると思ってしまうと終わり そこから進展はない ソートの回数を減らすように考えたりソート自体を行わないでうまく処理することを学ばないといけない
450 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 09:43:13.42 ID:cNLTxFDL0.net] ソートがボトルネックになった時に最適化を迫られたら弄るしかないじゃんね
451 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 09:50:14.96 ID:+WROkW6ha.net] ソートがボトルネックになったらじゃなくて普通にソートを使うときには必ず気に掛けるべき ループの中にソート入れてるコードがあったりする ループ出た後に一度やればいいだけなのにと思うがそういう所に思いが至らないんだろう
452 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 10:02:50.79 ID:9BhkjmpP0.net] 今なんねーよ流石に
453 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 10:09:09.80 ID:+WROkW6ha.net] メソッドの中でソートして戻り値返してるのにもらった側でもソートしたりとか 無駄なことをする可能性はどこにでもある 他人に見られたときにこいつ馬鹿だなと思われないようなコードを書く練習をしよう
454 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 10:17:01.49 ID:HfCJ1F6L0.net] listのsortメソッドって安定ソートだっけ?
455 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 10:19:40.66 ID:8e51ow7Fa.net] >>444 それは細かい最適化よりも設計を見直すべきだと思うよ 物事を大域的に見ることができず小手先のハックだけでなんとかしようとするのはプログラマが陥りがちな非常に悪い癖だから注意
456 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 10:24:24.53 ID:+WROkW6ha.net] 小手先のハックじゃなくて基本だろ どこでソートするかなんて基本中の基本
457 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 10:25:31.30 ID:+0R+dzN2M.net] 無意味な仕事を無くすように働きかけるのではなく、無意味な仕事を無駄に最適化しようとするのは低学歴な意識高い系プログラマあるある
458 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 11:39:31.85 ID:cgZSyzeqa.net] >>448 https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1.sort > This implementation performs an unstable sort ついでにいうとArray.Sortも不安定ソートで、Enumerable.OrderByと.ThenByは安定ソート
459 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 12:31:18.60 ID:3jwnQLuZ0.net] ソートはプログラムを覚えるために勉強するもので 実用上はライブラリ使えばいい ただ、勉強するネタとしては割と上質なもの
460 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 12:34:57.35 ID:y1/myRC20.net] (回答する方も)初心者スレらしくていい流れだね
461 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 12:46:19.25 ID:WZ0UQqME0.net] こういうの、listにロックをかけたのに何で同listを使う後続処理がすぐ実行されちゃうの? https://paiza.io/projects/e/EbjQiWv8ebNkW4bbkAY_YQ using System.Collections.Generic; using System.Threading.Tasks; using System; public class Hello{ public static void Main(){ var list = new List<int>(); for(int i=1; i<=1000; i++) { list.Add(i); } Task.Run(()=>{ lock(list){ Task.Delay(10000); } }); Console.WriteLine(list[123]); } }
462 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 12:51:36.48 ID:9BhkjmpP0.net] まだ、そんな産廃機能いじってんのか
463 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 13:00:01.62 ID:cgZSyzeqa.net] >>455 https://ufcpp.net/study/csharp/sp_thread.html#lock lock文はMonitor.EnterやMonitor.Exitを使った糖衣構文であって Monitor.Enterでロックを取得する(=既にロックされているなら、それが解放されるまで待つ) 例示コードではTask中ではlockしているもののConsole.WriteLine箇所はlockがないので、すぐに実行される
464 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 13:12:13.25 ID:6I4G/mIH0.net] >>455 lockの使い方が間違ってる(>>457 )のと、Task.Delay()の使い方が間違ってる。 Task.Delay()は通常awaitして使うがlockステートメント中では使えないので、Task.Delay().Wait()するか代わりにThread.Sleep()にする。 後、Task.Run()で作ったタスクが実行開始されたか考慮していないから、大抵はConsole.WriteLine()が先に実行される。
465 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 14:40:03.19 ID:T6P0EJpRd.net] >>441 俺だよ俺
466 名前:デフォルトの名無しさん [2019/04/21(日) 15:32:01.70 ID:WZ0UQqME0.net] ありがとう、このコードだと欠陥だらけなのか・・・・ 使用箇所ごとにLockが必要なのか、それとタスクより先に次の行が実行されてる可能性が高いのは全く気づいてなかった ただ、 >Task.Delay()は通常awaitして使うがlockステートメント中では使えないので、Task.Delay().Wait()するか代わりにThread.Sleep()にする。 っていうのはどういうことなの?Lock外にスレッドを返されちゃうのかしら?
467 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 16:07:55.74 ID:i587kr5jd.net] >>459 よおキチガイ
468 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 16:32:29.56 ID:RWXhngOc0.net] >>460 Task.Delay()だけだと完了を待ってないから、実質無いのと同じ
469 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 17:35:25.00 ID:F9kXeXwV0.net] >>460 ピーコックアンダーソンの非同期動画みてみればすぐに理解できるぞ
470 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 22:18:43.95 ID:rykfOnh80.net] 速度がどうとか言うんだったらc#なんか使うなよと少し思いました
471 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 22:35:33.45 ID:CLsKfNj20.net] >>464 少しってなんだよ!
472 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 23:52:50.47 ID:SWXjVSz30.net] >>465 a little
473 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 04:23:42.26 ID:29e/0Uiq0.net] じゃあ残りの大半は何を思ってたの
474 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 19:50:45.64 ID:DglGSvcP0.net] ソートってポインタやmalloc, memcpyとか使ってこねくり回すのが楽しいのにC#だとイマイチだよね
475 名前:デフォルトの名無しさん [2019/04/22(月) 20:39:27.38 ID:Xu5D3g840.net] 独自に作成したユーザコントロールをdataGridViewのカラムに追加する処理を作成しているんですが 追加したものをそのまま削除するとうまく削除出来ず、一方のユーザコントロールが必ず画面上に残ってしまうんですが なぜでしょうか?原因がわからず悩んでいます どなたか教えてください //@ひとまず空のデータを作成してdataGridViewに格納 DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[] {new DataColumn(), new DataColumn(), }); dt.Rows.Add(new object[] { "", "" }); this.dataGridView1.DataSource = dt; //Aユーザコントロール1をdataGridViewに追加 UserControl1 userControl1 = new UserControl1(); this.dataGridView1.Controls.Add(userControl1); userControl1.Location = this.dataGridView1.GetCellDisplayRectangle(0, 0, true).Location; //Bユーザコントロール2をdataGridViewに追加 UserControl1 userControl2 = new UserControl1(); this.dataGridView1.Controls.Add(userControl2); userControl2.Location = this.dataGridView1.GetCellDisplayRectangle(1, 0, true).Location; //C追加したユーザコントロールを削除→何故かユーザコントロール2だけが残る dataGridView1.Controls.Clear();
476 名前:469 [2019/04/22(月) 20:40:58.08 ID:Xu5D3g840.net] ちなみに私が試したのはvisualStudioの2017です
477 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 20:42:29.96 ID:5zGuWDFU0.net] c#だと遅くて無理みたいな高尚なプログラム触ってないからよくわからん cppとc#でどれくれい違うん?
478 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 20:52:55.67 ID:doLks5OSd.net] >>471 何するかによるし言語仕様理解せずにコーディングすればC++だろうがC#だろうが遅くはなる 早くしたけりゃどの言語だってコンパイラが吐くコード見ろになるし極論アセンブラしてろになる シビアな演算速度求められるようなソフトじゃなきゃ気にするような速度は無い 個人的にいろいろ開発してて速度面で困ったことはない
479 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 21:35:41.32 ID:puVU3XKCM.net] 特定のアプリを監視して表示された文字(画像)をテキストにするアプリ作ったけど c#だとチェックに1秒、c++とGDIのDLLだと0.01秒とかそんな感じだった c#で作って必要ならc++にコンバートするのでいいと思う
480 名前:デフォルトの名無しさん mailto:sage [2019/04/22(月) 21:59:37.22 ID:a2wjQuhnM.net] >>468 unsafe使えば
481 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 00:01:21.36 ID:5LmBAPnu0.net] 画像処理とかその部分はunsafeとかcだろ。それぐらいは当たり前
482 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 00:14:05.59 ID:Bc6Ot9Tr0.net] 別にC#でいくらでも早くできるけどそれしないでC++より遅いってそりゃそうだよねとしか GCの恩恵受けてunsafe使わずセーフティな状態でしょ 突き詰めたC++と突き詰めたC#なら.NETで動く分C#が不利なのは仕方ない 突き詰める必要がない部分で恩恵を受けられるんだから、処理速度以外にメリット感じないなら速い言語やればいい 言語なんて所詮道具なんだから適材適所
483 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 00:15:59.36 ID:lAbUfbw70.net] sleepが1ms単位指定なのに平気で30msくらいかかったりする
484 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 00:21:34.72 ID:Qu51xl5v0.net] >>477 Windowsの仕様なのでC#と関係なく発生するよ
485 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 00:22:35.63 ID:1xhRm/Xtd.net] OSの内部クロックのせい
486 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 02:07:58.81 ID:TPVsn91QM.net] >>473 そりゃあおまえさんのコードが糞なだけや
487 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 02:09:14.72 ID:V6IaHlzqa.net] OSにクロックはないでしょうw いやスケジューリングとかタイムスライスとかそんなことが言いたいんだとは思うけど
488 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 02:35:38.55 ID:1xhRm/Xtd.net] >>481 え…
489 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 07:53:20.75 ID:5v63vvPIa.net] TickCountの事だと思う。
490 名前:デフォルトの名無しさん [2019/04/23(火) 11:11:38.25 ID:D0U8cwP90.net] awaitのついた文の次の文を実行する際に、await前と同じスレッドに帰ってきてもらうことってできないの?
491 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 11:25:52.45 ID:NBcK336D0.net] 元のスレッドがそういうことできる機能を持ってればできるよ WinFormやWPFのGUIスレッドはメッセージループで実現してて それらの場合はGUIスレッドでawaitすればGUIスレッドに戻ってくるのが既定だし
492 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 12:18:02.90 ID:m6tbNaeWM.net] Pythonでカラー画像をRGBごとに分割して出力するスクリプトを書いたんだけど、 opencv使わずにC#でも出来るのかな? C#でもnumpyみたいなの無いの?
493 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 12:20:58.93 ID:4ETsFZLA0.net] どんだけ馬鹿なんだよ
494 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 13:00:40.13 ID:N4fQ2uHcd.net] >>486 numpyってrubyですか?
495 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 15:41:23.24 ID:elaW7zc+0.net] >>486 まんまは無いけど部分的にだったら何らかのライブラリで補完できるんじゃないかな? これとか https://numerics.mathdotnet.com
496 名前:デフォルトの名無しさん [2019/04/23(火) 16:29:44.88 ID:D0U8cwP90.net] >>485 コンソールアプリ等だとなかなか難しいんかな
497 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 16:33:48.41 ID:EaCRsjQU0.net] >>490 Task.WaitAnyとかでできんもんか?
498 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 17:58:47.89 ID:xFm0RmkHa.net] >>484 いやいや最初から同じスレッドですからww そもそも同一メソッド内で別のスレッドを起動することはあっても 実行中に途中のスレッドに切り替わるとかそんなのありえへんwww
499 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 19:05:14.26 ID:hvzt5+/sd.net] >>492 しょうもない嘘をつくな
500 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 19:28:13.89 ID:2vLu2U8QM.net] 誤解が誤解を生む 仕様について理解が足りない
501 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 19:35:04.22 ID:xFm0RmkHa.net] ネタじゃなくて本気で変な誤解してるのか... メソッドの途中で行が変わると別のスレッドで実行されるとかそんな言語怖くて使えないよwww
502 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 19:36:05.31 ID:2vLu2U8QM.net] お前は勘違いしてる GUIとCUIで仕様が違ってる
503 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 19:50:14.81 ID:2vLu2U8QM.net] await/asyncは単なるTask非同期処理を簡易的に書ける糖衣構文 次にawaitの次をどのスレッドになるかはその時の状態次第 GUIではそれでは困るのでデフォルトで同じスレッドが処理をするようにしてあるだけ
504 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:19:35.25 ID:xFm0RmkHa.net] 訳のわからん勘違いをしてるのはどっちだよ 自信満々で馬鹿じゃないマジで
505 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:30:14.95 ID:aIitEIPQ0.net] https://ufcpp.wordpress.com/2012/11/12/asyncawait%E3%81%A8%E5%90%8C%E6%99%82%E5%AE%9F%E8%A1%8C%E5%88%B6%E5%BE%A1/
506 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:30:27.32 ID:PlCSQgU2M.net] deligate
507 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:36:54.48 ID:iDnak3xha.net] >>495 https://ideone.com/7wVOXT
508 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 20:41:16.72 ID:xFm0RmkHa.net] 勘違いをしているのは俺の方だった... 申し訳ないですw
509 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 21:04:08.70 ID:2vLu2U8QM.net] すなおでいいんでない?
510 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 21:19:00.48 ID:7omDh/oid.net] 煽る時点で目糞鼻糞
511 名前:デフォルトの名無しさん [2019/04/23(火) 21:57:22.24 ID:D0U8cwP90.net] 同じスレッドに戻ってきてもらうのに、簡単な方法ってないのかな・・・・
512 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 22:10:23.58 ID:iDnak3xha.net] >>505 >>490 を見るに、コンソールアプリで特定スレッドで処理したいみたいだけど、どういった理由? GUIなら、時間がかかる処理は別スレッドで、画面更新は絶対にUIスレッドで、といった使い分けがあるけど CUIで特定スレッドを意識する理由がちょっと思いつかないんだ
513 名前:デフォルトの名無しさん [2019/04/23(火) 22:42:29.23 ID:D0U8cwP90.net] >>506 WebAPIサーバを作りたく、その中で扱うデータについてトランザクション処理みたいなことをしたかったんです 通信関連でAwaitが多用されている中でも、データのロックをできるだけ減らしたい、またうっかりミスしてロック外に出ないでほしいと思ったんです
514 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 00:21:10.86 ID:9Dlmymg8a.net] >>507 それを聞いても、「特定スレッドで絶対に処理したい」が主目標にはならない気がする 「ロックにReaderWriterLockSlimを使っていて、ロック取得と解放は同じスレッドで行う必要がある」のような状況ならまだ分かるんだけど もしもこの状況であるなら、SemaphoreSlimでロックするようにすれば、WaitOneAsyncで待つスレッドと、Releaseするスレッドを別にできる(=間でawaitできる) 万一本当に何か理由があって特定スレッドで処理を続けたいのなら、Taskをawaitするのでなく.Wait()で待つようにすれば、スレッドは切り替わらなくなる > うっかりミスしてロック外に出ないでほしい これが「ロックを取得したけど、解放を忘れる」ことを指すのであれば try {} finally {} や、ラップクラスを作ってIDisposable実装してusing() {} するのが対策になるかもしれない 取得と解放がメソッドを跨いだりするなら面倒くさくなるけど……
515 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 23:50:01.61 ID:1l/c830P0.net] https://ideone.com/TM1zJh if (ob.volume == volume)この部分なのですが 左辺は引数で取ったobのメンバ変数であることは分かるのですが右辺はどのメンバ変数なんでしょうか? 入門書のコードなのですが…
516 名前:デフォルトの名無しさん [2019/04/25(木) 23:52:47.61 ID:LJHMbymK0.net] >>509 6行目
517 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 23:54:19.01 ID:LJHMbymK0.net] いや、thisって答えた方が良いのか
518 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 23:59:26.79 ID:8Sf9N2Ww0.net] 19行目にも同じ構造があるけどそっちはすんなり入ったんだろうか
519 名前:デフォルトの名無しさん mailto:sage [2019/04/26(金) 00:01:25.44 ID:6Aa9jI4a0.net] >>510 メソッドを呼び出したob1のメンバってことですかね? 理解できました。ありがとうございます
520 名前:デフォルトの名無しさん mailto:sage [2019/04/26(金) 23:30:08.64 ID:9lAtl2Yi0.net] コンストラクタ内で例外をthrowするのはご法度ですか?
521 名前:デフォルトの名無しさん mailto:sage [2019/04/26(金) 23:43:18.42 ID:p/I2x8fjd.net]