「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part137
https://mevius.5ch.net/test/read.cgi/tech/1523004019/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
ふらっと C#,C♯,C#(初心者用) Part138
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 369a-msj4)
2018/06/05(火) 19:32:42.28ID:70UTtyrn0724デフォルトの名無しさん (スプッッ Sd3f-/JJK)
2018/07/19(木) 07:22:53.40ID:Y653MTcJd >>696
awaitでは上手く実現できなさそうな構造でした
https://msdn.microsoft.com/ja-jp/library/system.threading.monitor(v=vs.110).aspx
monitorクラスを使って実現できそうだなとなりました
ただこれのシグナルを投げるpulseとpulseallの違いがよくわかりません
pulseは変数で渡したオブジェクトのスレッドを、pulseallは渡すオブジェクトとか関係なくwaitで止まってるすべてのスレッドを動かす?
awaitでは上手く実現できなさそうな構造でした
https://msdn.microsoft.com/ja-jp/library/system.threading.monitor(v=vs.110).aspx
monitorクラスを使って実現できそうだなとなりました
ただこれのシグナルを投げるpulseとpulseallの違いがよくわかりません
pulseは変数で渡したオブジェクトのスレッドを、pulseallは渡すオブジェクトとか関係なくwaitで止まってるすべてのスレッドを動かす?
725デフォルトの名無しさん (スッップ Sdbf-4ryk)
2018/07/19(木) 07:52:34.10ID:pmdFJ8GPd726デフォルトの名無しさん (アウアウウー Sadb-rtlg)
2018/07/19(木) 07:53:35.73ID:EPnya5cJa727デフォルトの名無しさん (ワッチョイ 9f9d-yhN8)
2018/07/19(木) 10:16:19.48ID:cAPUq0O30 Aそのものは非同期(バックグラウンド)で動く必要があるとして
そもそもBが非同期で動く必要性がわからん
かならず応答きてから次をよぶんだろ?
そもそもBが非同期で動く必要性がわからん
かならず応答きてから次をよぶんだろ?
728デフォルトの名無しさん (アウアウエー Sadf-0r7x)
2018/07/19(木) 11:39:51.48ID:wWZN809Va むしろ一番の疑問は、
>リクエストは一つずつ送らないといけない制約がある
のであれば、キューを持つべきなのはリクエストを送る側ではなく受ける側なんじゃないか、
なぜリクエストを送る側に受ける側の都合に合わせる負担をさせるのか、
ってことだと思うけど、まあ話が曖昧過ぎてよくわからんね。
>リクエストは一つずつ送らないといけない制約がある
のであれば、キューを持つべきなのはリクエストを送る側ではなく受ける側なんじゃないか、
なぜリクエストを送る側に受ける側の都合に合わせる負担をさせるのか、
ってことだと思うけど、まあ話が曖昧過ぎてよくわからんね。
729719 (ワッチョイ ff8a-H0hI)
2018/07/19(木) 12:02:04.85ID:4jMcHp760 >>722
自分のコードだと野暮ったくて古い感じがしたんですが
out var なるものを使ってすっきりさせるんですね
>>723
最近、ラムダ式やLINQを始めたんで↓みたいにメソッドチェーンで繋げたかったんですが
これだとやりすぎなんですねw
>> myTable.TryGetValue("Iwate", out var s) ? MessageBox.Show(s) : DialogResult.None; とか
>> (myTable.TryGetValue("Iwate", out var s) ? (Action<string>)(x => MessageBox.Show(x)) : (Action<string>)(_ => {}))();
>> とか書けなくはないけど俺ならこんなの書いてきやがったらコードレビューで突き返す
ありがとうございました
自分のコードだと野暮ったくて古い感じがしたんですが
out var なるものを使ってすっきりさせるんですね
>>723
最近、ラムダ式やLINQを始めたんで↓みたいにメソッドチェーンで繋げたかったんですが
これだとやりすぎなんですねw
>> myTable.TryGetValue("Iwate", out var s) ? MessageBox.Show(s) : DialogResult.None; とか
>> (myTable.TryGetValue("Iwate", out var s) ? (Action<string>)(x => MessageBox.Show(x)) : (Action<string>)(_ => {}))();
>> とか書けなくはないけど俺ならこんなの書いてきやがったらコードレビューで突き返す
ありがとうございました
730デフォルトの名無しさん (スプッッ Sd3f-FUqr)
2018/07/19(木) 12:23:58.43ID:apArmWopd 見やすくしたり行数減らす為の機能なのに一文に無理やり詰めたら見づらいだろうしな
LINQ使わなくても
;で終わらせた文を一列にずっと書き続けてたらなんだこいつってなるだろうし
LINQ使わなくても
;で終わらせた文を一列にずっと書き続けてたらなんだこいつってなるだろうし
731デフォルトの名無しさん (ブーイモ MM7b-klHS)
2018/07/19(木) 12:45:19.73ID:7c8TqsUTM MQ使えよ
732デフォルトの名無しさん (オッペケ Sr4b-Kbv3)
2018/07/19(木) 13:14:15.48ID:kD3lyTPJr varのメリットってなに?
733デフォルトの名無しさん (スフッ Sdbf-6Gsv)
2018/07/19(木) 14:01:22.48ID:goaSBPuMd >>732
定期的にこのスレを荒らすメリットがある。
定期的にこのスレを荒らすメリットがある。
734デフォルトの名無しさん (ワッチョイ 7783-4GkJ)
2018/07/19(木) 14:35:28.55ID:3tSlXwR10 10年で1スレも消費できないムラダ厨がまた初心者スレで暴れてるのか。
735デフォルトの名無しさん (ササクッテロル Sp4b-zvcE)
2018/07/19(木) 15:40:49.42ID:afTcWGfVp >>728
送る側で待たないと仕事を溜め込んだ受け側が最悪死ぬか無視する様になるぞ。
送る側で待たないと仕事を溜め込んだ受け側が最悪死ぬか無視する様になるぞ。
736デフォルトの名無しさん (アウアウエー Sadf-0r7x)
2018/07/19(木) 16:09:05.04ID:wWZN809Va >>735
意味わかんないよ
キューが満杯ならエンキューできないだけ。
そして、キューが満杯になるような事態が起こるかどうかは、キューを送る側受ける側
どちらが持つかという設計の問題とは何も関係がない。
送り側が持てばそんな事態は起こらない、などとはまったく言えない
意味わかんないよ
キューが満杯ならエンキューできないだけ。
そして、キューが満杯になるような事態が起こるかどうかは、キューを送る側受ける側
どちらが持つかという設計の問題とは何も関係がない。
送り側が持てばそんな事態は起こらない、などとはまったく言えない
737デフォルトの名無しさん (ワッチョイ ffed-4GkJ)
2018/07/19(木) 16:13:58.11ID:GVBKISLp0 共有メモリにFIFO作りたいのでサンプルコードください
738デフォルトの名無しさん (アウアウウー Sadb-4GkJ)
2018/07/19(木) 19:27:54.48ID:FFg3mKaqa >>737
基本的にスレチだな
基本的にスレチだな
739デフォルトの名無しさん (ワッチョイ f717-H0hI)
2018/07/19(木) 20:33:54.32ID:AM4tPqCx0 >>737
マルチ乙
マルチ乙
740デフォルトの名無しさん (ワントンキン MM7f-ArLl)
2018/07/19(木) 20:34:49.77ID:m5MPu7YPM バックグラウンドジョブをメモリに置いて管理するとクラッシュした時につらいのでやめてください
741デフォルトの名無しさん (ササクッテロル Sp4b-zvcE)
2018/07/19(木) 23:06:52.57ID:afTcWGfVp742デフォルトの名無しさん (ワッチョイ 9f7f-0FgR)
2018/07/19(木) 23:10:07.57ID:3HXgvZll0743デフォルトの名無しさん (ワッチョイ ffed-4GkJ)
2018/07/19(木) 23:16:09.86ID:GVBKISLp0 >>742
ありがとうございます
ありがとうございます
744デフォルトの名無しさん (アウアウエー Sadf-0r7x)
2018/07/19(木) 23:24:45.38ID:OO5CyzUia >>741
何を言ってんの。
ちゃんと自分の頭で考えて言ってる?
キューの容量が100だとする。
リクエストが100まで溜まってしまうかどうかは、キューをどちらが持つかと関係ないでしょ。
スループットはリクエストの処理能力で決まるんであって、キューをどっちが持つかで決まるんじゃない。
当たり前でしょ。
送る側が待てばたまらない?
それは受ける側がリクエスト拒否したらたまらないと言ってるのと同じ
君の世界じゃ、バケツリレーの余分なバケツの置き場所を送り元におくか送り先に置くかで
バケツの輸送能力(単位時間あたりの送れる水の量)が変わるの?
変わるわけがないでしょ
頼むよマジで
何を言ってんの。
ちゃんと自分の頭で考えて言ってる?
キューの容量が100だとする。
リクエストが100まで溜まってしまうかどうかは、キューをどちらが持つかと関係ないでしょ。
スループットはリクエストの処理能力で決まるんであって、キューをどっちが持つかで決まるんじゃない。
当たり前でしょ。
送る側が待てばたまらない?
それは受ける側がリクエスト拒否したらたまらないと言ってるのと同じ
君の世界じゃ、バケツリレーの余分なバケツの置き場所を送り元におくか送り先に置くかで
バケツの輸送能力(単位時間あたりの送れる水の量)が変わるの?
変わるわけがないでしょ
頼むよマジで
745デフォルトの名無しさん (ワッチョイ f7d2-zNEp)
2018/07/20(金) 00:04:31.35ID:K42rKqTp0746デフォルトの名無しさん (ワッチョイ 3781-0FgR)
2018/07/20(金) 00:15:51.43ID:v/t2rOLx0 >>745
クラスのインスタンスをメンバ変数などに設定して持つ
クラスのインスタンスをメンバ変数などに設定して持つ
747デフォルトの名無しさん (ブーイモ MM7b-klHS)
2018/07/20(金) 00:16:43.45ID:Cn0RK5hEM 配置計画
GOFはそちらを優先して説明しているが
GOFはそちらを優先して説明しているが
748デフォルトの名無しさん (ワッチョイ 171e-SQ69)
2018/07/20(金) 01:07:34.53ID:AsTO3swr0 持つと待つ
混ざりすぎじゃねぇの?
待つって言いたいんだよね?
混ざりすぎじゃねぇの?
待つって言いたいんだよね?
749デフォルトの名無しさん (オイコラミネオ MM4f-FMaE)
2018/07/20(金) 06:49:01.24ID:rjUp7fMrM750デフォルトの名無しさん (ワッチョイ 9f11-zNEp)
2018/07/20(金) 09:57:40.63ID:KW0DEJnu0751デフォルトの名無しさん (ササクッテロル Sp4b-zvcE)
2018/07/20(金) 10:43:27.30ID:aSukBuZjp752デフォルトの名無しさん (アウアウエー Sadf-0r7x)
2018/07/20(金) 10:47:52.01ID:j2kgPlBya >>751
まだ言ってるのか。
君の世界では
>送る側、更にそこに送る側、更に大元の送る行為を辞めされはいいって話
これが可能かどうかはリクエストのキューをどちらが持つかに依存するのか。
キューをリクエストの受け側が持ったらそれは出来ないのか。
意味が分からないよ
何が
>通信のフローコントロールの話と同じなんだよ?
だw
馬鹿過ぎて笑える
まだ言ってるのか。
君の世界では
>送る側、更にそこに送る側、更に大元の送る行為を辞めされはいいって話
これが可能かどうかはリクエストのキューをどちらが持つかに依存するのか。
キューをリクエストの受け側が持ったらそれは出来ないのか。
意味が分からないよ
何が
>通信のフローコントロールの話と同じなんだよ?
だw
馬鹿過ぎて笑える
753デフォルトの名無しさん (ラクッペ MM0b-3H7b)
2018/07/20(金) 10:50:07.22ID:GHEf7JCUM よそでやってくんねーかなクソカス
754デフォルトの名無しさん (ササクッテロル Sp4b-zvcE)
2018/07/20(金) 10:50:53.38ID:aSukBuZjp おまえ、目悪過ぎて呆れるわ。
持つなんて一言も言って無いだろw
待つだw マツ。
キューをどっちが持ってるかなんて話はしてない。
持つなんて一言も言って無いだろw
待つだw マツ。
キューをどっちが持ってるかなんて話はしてない。
755デフォルトの名無しさん (ブーイモ MM5b-4GkJ)
2018/07/20(金) 11:06:39.88ID:KI/QuNIvM アスペルガーの人はひとつのことしか同時にわからないから
二つ話題があることに気がつかない
その話題は持つであってるよ
二つ話題があることに気がつかない
その話題は持つであってるよ
756デフォルトの名無しさん (ササクッテロル Sp4b-zvcE)
2018/07/20(金) 11:16:02.27ID:aSukBuZjp >>755
まあ普通は受け取る側に郵便受けが無いと受け取る人はいちいち局留めの郵便を受け取りに行かなきゃならないんだけど、まあ、それはどちらでも機能するからあんまり争点にはならないけどね。
まあ普通は受け取る側に郵便受けが無いと受け取る人はいちいち局留めの郵便を受け取りに行かなきゃならないんだけど、まあ、それはどちらでも機能するからあんまり争点にはならないけどね。
757デフォルトの名無しさん (スププ Sdbf-DFDX)
2018/07/20(金) 13:07:56.71ID:aSN8UD58d バケツリレーの喩えでもスループットは変わっちゃうんだよな。
受け側に送信側が送信する総量より大きいバッファを持てば、スループットは水の入ったバケツを運ぶ時間に依存するだけで済む。
キューがそれより遅ければバケツを引き渡すために時間が余計にかかるわけだから、スループットは落ちる。
送信側にキューを持ったところで、送信側は送信処理に対して同期的に処理しないだけで済むだけで、そのキューからの送出がどんどん遅れるだろう。受け取ってくれないなら。
受け側に送信側が送信する総量より大きいバッファを持てば、スループットは水の入ったバケツを運ぶ時間に依存するだけで済む。
キューがそれより遅ければバケツを引き渡すために時間が余計にかかるわけだから、スループットは落ちる。
送信側にキューを持ったところで、送信側は送信処理に対して同期的に処理しないだけで済むだけで、そのキューからの送出がどんどん遅れるだろう。受け取ってくれないなら。
758デフォルトの名無しさん (ワッチョイ 17b3-H0hI)
2018/07/20(金) 13:54:59.01ID:gB9GbXMP0759デフォルトの名無しさん (ワッチョイ d763-ewJP)
2018/07/20(金) 21:28:53.81ID:OAXfUTo30 c=(a*a+b*b)
c=System.Math.Sprt(c)
これでcの平方根を出そうとしたのですがSystem.MathにSprtの定義がありませんと出ます
sharedevelopを使っています
c=System.Math.Sprt(c)
これでcの平方根を出そうとしたのですがSystem.MathにSprtの定義がありませんと出ます
sharedevelopを使っています
760デフォルトの名無しさん (ブーイモ MMcf-klHS)
2018/07/20(金) 21:32:35.58ID:XkM+nwLwM SQRT
761デフォルトの名無しさん (ブーイモ MMbf-rtlg)
2018/07/20(金) 21:35:00.80ID:6RzmSKAyM エディタの不具合だろ
SharpDevelopなどという化石は今すぐアンインストールしてVSかVSCodeを使え
SharpDevelopなどという化石は今すぐアンインストールしてVSかVSCodeを使え
762デフォルトの名無しさん (ブーイモ MMcf-klHS)
2018/07/20(金) 21:44:14.53ID:XkM+nwLwM 平方根の綴りが違う
763デフォルトの名無しさん (ワッチョイ 975d-egWL)
2018/07/20(金) 22:17:34.54ID:7jIkQpVM0 square rootだからねぇ
764デフォルトの名無しさん (ワッチョイ d763-ewJP)
2018/07/21(土) 00:28:32.93ID:WdWG9X6t0 ありがとうございます 解決しました
765デフォルトの名無しさん (ワッチョイ 9fe3-ol3M)
2018/07/21(土) 06:52:38.43ID:HGZKU0EK0 スパート!
766デフォルトの名無しさん (ワッチョイ 9f9d-gdxi)
2018/07/21(土) 13:53:42.54ID:aw31/LTY0 >>754
もともと
>キューを持つべきなのはリクエストを送る側ではなく受ける側なんじゃないか、
にたいして
>送る側で待たないと仕事を溜め込んだ受け側が最悪死ぬか無視する様になるぞ。
ってレスしてるのが発端なんだが
どうでもいい良いしよそでやって欲しいけど
もともと
>キューを持つべきなのはリクエストを送る側ではなく受ける側なんじゃないか、
にたいして
>送る側で待たないと仕事を溜め込んだ受け側が最悪死ぬか無視する様になるぞ。
ってレスしてるのが発端なんだが
どうでもいい良いしよそでやって欲しいけど
767デフォルトの名無しさん (ワッチョイ 97b5-zvcE)
2018/07/21(土) 14:14:10.21ID:IqGIA9LU0 話題が一変してんのにわざわざ掘り返すなよw
言ってる事とやってる事が矛盾してんぞw
言ってる事とやってる事が矛盾してんぞw
768デフォルトの名無しさん (ワッチョイ ff81-3H7b)
2018/07/21(土) 15:42:07.60ID:8fBGWCJL0 レスバトルって奴だろ
最後に言及した方が勝ちなんだって
これ見るといつも思うが、こういう馬鹿には自分自身を見る自意識がないのかね
最後に言及した方が勝ちなんだって
これ見るといつも思うが、こういう馬鹿には自分自身を見る自意識がないのかね
769デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/21(土) 20:00:10.16ID:rsQP0F780 たすけて!
Parallel.ForEachの中でデータグリッドの内容を更新してるんだけど
途中で爆発します
データグリッド全体に✕って出て非表示になる
データグリッドの更新処理はlockで囲ってても競合は起きちゃうものですか?
Parallel.ForEachの中でデータグリッドの内容を更新してるんだけど
途中で爆発します
データグリッド全体に✕って出て非表示になる
データグリッドの更新処理はlockで囲ってても競合は起きちゃうものですか?
770デフォルトの名無しさん (ワッチョイ f717-H0hI)
2018/07/21(土) 20:05:25.49ID:CBiNHREt0 まず原因を切り分けろ
Parallel.ForEachを外しても爆発するか確認するんだ
Parallel.ForEachを外しても爆発するか確認するんだ
771デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/21(土) 20:07:27.16ID:rsQP0F780772デフォルトの名無しさん (ワッチョイ 9f7f-0FgR)
2018/07/21(土) 20:08:57.28ID:gktKld7A0773デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 20:10:43.13ID:BEEMYUE30 >>771
Action<TLocal> localFinally の引数をとるオーバーロードを使ってみたらどうでしょう?
Action<TLocal> localFinally の引数をとるオーバーロードを使ってみたらどうでしょう?
774デフォルトの名無しさん (ブーイモ MMcf-rtlg)
2018/07/21(土) 20:10:44.76ID:H6KFndt4M >>768
君のレスを見るといつも思うが、こういう特徴のある口調のレスを繰り返す人には自分自身を見る自意識がないのかね
君のレスを見るといつも思うが、こういう特徴のある口調のレスを繰り返す人には自分自身を見る自意識がないのかね
775デフォルトの名無しさん (ワッチョイ bf99-DFDX)
2018/07/21(土) 20:10:59.84ID:nH897ECr0 invokeするか、ContextにPostするしか無いんじゃないかな
776デフォルトの名無しさん (ワッチョイ 9fb3-y/zy)
2018/07/21(土) 20:22:09.68ID:3bWsh9tI0777デフォルトの名無しさん (アウアウエー Sadf-0r7x)
2018/07/21(土) 20:22:10.55ID://qCwfF7a 爆発w
778デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/21(土) 20:24:00.77ID:rsQP0F780779デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 20:35:04.73ID:BEEMYUE30 私は >>773 ですが Invoke について自分があまり良く分かってない気がしてきたので
詳しい方がいらっしゃったら教えてください
UIスレッドで Parallel.ForEach を呼ぶとUIスレッドをつかんだまま並列処理が実行されて、
その並列処理のスレッドで Invoke を使うとデッドロックしてしまう気がするのですが
実際はそういうことはないのでしょうか?
詳しい方がいらっしゃったら教えてください
UIスレッドで Parallel.ForEach を呼ぶとUIスレッドをつかんだまま並列処理が実行されて、
その並列処理のスレッドで Invoke を使うとデッドロックしてしまう気がするのですが
実際はそういうことはないのでしょうか?
780デフォルトの名無しさん (ワッチョイ 9f9d-yhN8)
2018/07/21(土) 20:36:04.76ID:aw31/LTY0 マルチスレッドにしてInvokeしまくると結局パフォーマンスがガタ落ちしたりするがな
781デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 21:15:58.91ID:BEEMYUE30 >>779 です
WPF で下のようなコードを実行してみたらやっぱりデッドロックしてしまいました
Invoke はそれなりに慎重に使わないといけないみたいです
void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("このメッセージは必ず表示される");
Parallel.ForEach(Enumerable.Repeat(0, 2), i => Dispatcher.Invoke(() => { }));
MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}
ちなみに Enumerable.Repeat(0, 2) の部分を変えると以下のような挙動でした
Enumerable.Repeat(0, 0) に変える → デッドロックしない
Enumerable.Repeat(0, 1) に変える → デッドロックする
new int[] { } に変える → デッドロックしない
new int[] { 0 } に変える → デッドロックしない
new int[] { 0, 0 } に変える → デッドロックする
WPF で下のようなコードを実行してみたらやっぱりデッドロックしてしまいました
Invoke はそれなりに慎重に使わないといけないみたいです
void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("このメッセージは必ず表示される");
Parallel.ForEach(Enumerable.Repeat(0, 2), i => Dispatcher.Invoke(() => { }));
MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}
ちなみに Enumerable.Repeat(0, 2) の部分を変えると以下のような挙動でした
Enumerable.Repeat(0, 0) に変える → デッドロックしない
Enumerable.Repeat(0, 1) に変える → デッドロックする
new int[] { } に変える → デッドロックしない
new int[] { 0 } に変える → デッドロックしない
new int[] { 0, 0 } に変える → デッドロックする
782デフォルトの名無しさん (ワッチョイ 572b-lqiN)
2018/07/21(土) 21:16:52.59ID:1oayVCQs0 >>778
いいってことよ(´・ω・`)b
いいってことよ(´・ω・`)b
783デフォルトの名無しさん (ワッチョイ bf99-DFDX)
2018/07/21(土) 21:18:17.40ID:nH897ECr0 >>779
並列処理はUIスレッドではないスレッドで行われるよ。
いや、UIスレッドで行われるとは限らない、と言う言い方の方が正しいかな。
UIスレッドを掴んだままの意味がわからんが、挙動が謎なら、ブレークポイントつけて実行して、どのスレッドが何をしてるかを把握してはいかがだろうか。
今どのスレッドを使ってるかは表示されてるから。
並列処理はUIスレッドではないスレッドで行われるよ。
いや、UIスレッドで行われるとは限らない、と言う言い方の方が正しいかな。
UIスレッドを掴んだままの意味がわからんが、挙動が謎なら、ブレークポイントつけて実行して、どのスレッドが何をしてるかを把握してはいかがだろうか。
今どのスレッドを使ってるかは表示されてるから。
784デフォルトの名無しさん (ワッチョイ bf99-DFDX)
2018/07/21(土) 21:20:54.98ID:nH897ECr0 WPFかあ
785デフォルトの名無しさん (ワッチョイ 7feb-yhN8)
2018/07/21(土) 21:25:21.58ID:VW1YO4fA0 Windows版VSCodeで、monoを構文解析用のコンパイラとして指定することってできないのかな?
Unityの.Net4.0用プロジェクトで、数ヶ月前までは、.Net3.5用のSystem.Data.DLLを読み込んでくれたのにさあ
VisualStudioを更新したら構文解析用のコンパイラが変わったのか、古い.net3.5用のDLLを読み込んでくれなくて赤波線だらけになっちゃったぜ
4.0用のDLLもあるわけだけど、それを入れるとUnityのmonoの方でなぜかエラーを起こすし・・・どうしたら良いものか・・・・
Unityの.Net4.0用プロジェクトで、数ヶ月前までは、.Net3.5用のSystem.Data.DLLを読み込んでくれたのにさあ
VisualStudioを更新したら構文解析用のコンパイラが変わったのか、古い.net3.5用のDLLを読み込んでくれなくて赤波線だらけになっちゃったぜ
4.0用のDLLもあるわけだけど、それを入れるとUnityのmonoの方でなぜかエラーを起こすし・・・どうしたら良いものか・・・・
786デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 21:33:11.65ID:BEEMYUE30787デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 21:36:50.95ID:BEEMYUE30 Windows フォームで試してみたのでご報告を。
以下のコードを実行してみた結果、やっぱりデッドロックしてしまいました
Enumerable.Repeat(0, 2) を変えたときの挙動も >>781 と同じでした
void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("このメッセージは必ず表示される");
Parallel.ForEach(Enumerable.Repeat(0, 2), i => Invoke(new Action(() => { })));
MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}
以下のコードを実行してみた結果、やっぱりデッドロックしてしまいました
Enumerable.Repeat(0, 2) を変えたときの挙動も >>781 と同じでした
void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("このメッセージは必ず表示される");
Parallel.ForEach(Enumerable.Repeat(0, 2), i => Invoke(new Action(() => { })));
MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}
788デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/21(土) 22:26:34.46ID:rsQP0F780 えーわからん…
ちなみにフォームですビューです
つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか
それともThread生成してその中でParallelすれば良かったり…?これはすごい破綻してる気がしますが
uiスレッドから切り離した他スレッドから安全にuiを制御するなんて考えが可笑しいんでしょうか
ちなみにフォームですビューです
つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか
それともThread生成してその中でParallelすれば良かったり…?これはすごい破綻してる気がしますが
uiスレッドから切り離した他スレッドから安全にuiを制御するなんて考えが可笑しいんでしょうか
789デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 22:44:23.68ID:BEEMYUE30 >>788
あくまで私一人の考えですが・・・
[1] Invoke を使うと >>779 に書いたような理由でデッドロックするので
Parallel.ForEach でUIスレッドを使いたいなら >>773 のようにすべき
[2] しかし、同じく >>779 に書いたように Parallel.ForEach はUIスレッドを
つかんだまま並列処理を行うのでデータグリッドの更新処理だけ
Parallel.ForEach から切り出してもほとんど同じなのでは?
(一応 localFinally 中も他のスレッドは動けるので
そこで更新処理を行う方がいい場合もあるかもしれない)
[3] 並列処理が必要なほど大きな処理を行うなら、
一度UIスレッドを手放す選択肢も考えてみては?
ただ、Invoke がダメだと考えている人間自体が私だけのような気もするので
他の方の意見も聞いてみたほうがいいと思います
あと、[3] に関しては場合によりけりだと思うので、
具体的な処理内容を教えていただければ私の考えをお伝えしたいと思います
あくまで私一人の考えですが・・・
[1] Invoke を使うと >>779 に書いたような理由でデッドロックするので
Parallel.ForEach でUIスレッドを使いたいなら >>773 のようにすべき
[2] しかし、同じく >>779 に書いたように Parallel.ForEach はUIスレッドを
つかんだまま並列処理を行うのでデータグリッドの更新処理だけ
Parallel.ForEach から切り出してもほとんど同じなのでは?
(一応 localFinally 中も他のスレッドは動けるので
そこで更新処理を行う方がいい場合もあるかもしれない)
[3] 並列処理が必要なほど大きな処理を行うなら、
一度UIスレッドを手放す選択肢も考えてみては?
ただ、Invoke がダメだと考えている人間自体が私だけのような気もするので
他の方の意見も聞いてみたほうがいいと思います
あと、[3] に関しては場合によりけりだと思うので、
具体的な処理内容を教えていただければ私の考えをお伝えしたいと思います
790デフォルトの名無しさん (ワッチョイ 9f7f-0FgR)
2018/07/21(土) 22:55:07.29ID:gktKld7A0791デフォルトの名無しさん (ワッチョイ 9f7f-0FgR)
2018/07/21(土) 23:00:46.86ID:gktKld7A0 既に>>779に書いてあったね。その通り。
792デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 23:10:20.56ID:BEEMYUE30 >>790-791
レスありがとうございます
>>779 の考えで正しいのか不安だったのですがお陰様で自身が持てました
他に何かおかしなことを言ってしまっていたら教えていただけると嬉しいです
>>788
>>789 はレスとしてとっ散らかっている気がしてきたので一問一答で答えてみます
> つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか
Parallel を UI スレッドで実行する場合は悪手というか、致命的だと思います
> それともThread生成してその中でParallelすれば良かったり…?これはすごい破綻してる気がしますが
それなら期待通りの動作にはなると思います。ただ、確かにあまりいい方法ではないと思います
> uiスレッドから切り離した他スレッドから安全にuiを制御するなんて考えが可笑しいんでしょうか
正しく Invoke を使えば問題ないと思います
しかし今回の件からもわかるように、Invoke を正しく使うのはなかなか難しいようです
レスありがとうございます
>>779 の考えで正しいのか不安だったのですがお陰様で自身が持てました
他に何かおかしなことを言ってしまっていたら教えていただけると嬉しいです
>>788
>>789 はレスとしてとっ散らかっている気がしてきたので一問一答で答えてみます
> つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか
Parallel を UI スレッドで実行する場合は悪手というか、致命的だと思います
> それともThread生成してその中でParallelすれば良かったり…?これはすごい破綻してる気がしますが
それなら期待通りの動作にはなると思います。ただ、確かにあまりいい方法ではないと思います
> uiスレッドから切り離した他スレッドから安全にuiを制御するなんて考えが可笑しいんでしょうか
正しく Invoke を使えば問題ないと思います
しかし今回の件からもわかるように、Invoke を正しく使うのはなかなか難しいようです
793デフォルトの名無しさん (ワッチョイ d7b3-vUFk)
2018/07/21(土) 23:21:21.79ID:R8KbBSh90 .Invokeではなく.BeginInvokeを使うのはどう?
794デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 23:30:54.97ID:BEEMYUE30 >>793
それって
> それともThread生成してその中でParallelすれば良かったり…?
よりも更にワチャワチャする気がするのですがどうなんでしょう?
ワチャワチャって具体的にどういうことなのか
説明を求められれば頑張ってみようと思いますが、
自分の考えがあっているかも、それをうまく説明できるかどうかも
自信がないので、詳しい方の意見を聞けると嬉しいです
それって
> それともThread生成してその中でParallelすれば良かったり…?
よりも更にワチャワチャする気がするのですがどうなんでしょう?
ワチャワチャって具体的にどういうことなのか
説明を求められれば頑張ってみようと思いますが、
自分の考えがあっているかも、それをうまく説明できるかどうかも
自信がないので、詳しい方の意見を聞けると嬉しいです
795デフォルトの名無しさん (アウアウエー Sadf-0r7x)
2018/07/21(土) 23:41:01.32ID://qCwfF7a >>794
そんな難しい話じゃないっすよw
BeginInvokeは非同期に実行される、つまりキューにデリゲートを入れたらすぐに処理を返すので
Invokeのように自分で自分の終了を待機する状態に陥らない
そんな難しい話じゃないっすよw
BeginInvokeは非同期に実行される、つまりキューにデリゲートを入れたらすぐに処理を返すので
Invokeのように自分で自分の終了を待機する状態に陥らない
796デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/21(土) 23:43:41.94ID:rsQP0F780 >>792
有難う御座います
これで行けたので実装試してみます
void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("このメッセージは必ず表示される");
Task.Factory.StartNew(() =>
{
Parallel.ForEach(Enumerable.Repeat(0, 2), i => Invoke(new Action(() => { })));
}
MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}
有難う御座います
これで行けたので実装試してみます
void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("このメッセージは必ず表示される");
Task.Factory.StartNew(() =>
{
Parallel.ForEach(Enumerable.Repeat(0, 2), i => Invoke(new Action(() => { })));
}
MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}
797デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/21(土) 23:55:52.12ID:BEEMYUE30798デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 00:03:07.23ID:qjdpSLXF0 >>797
データグリッドビューは進捗状況を見るために更新していて
1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます
ダメではなく単純に自分が分かってないだけです
この処理ならlocalFinallyが最適かもです
深く調べてみます
データグリッドビューは進捗状況を見るために更新していて
1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます
ダメではなく単純に自分が分かってないだけです
この処理ならlocalFinallyが最適かもです
深く調べてみます
799デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 00:13:38.17ID:IU6x2eOV0 >>798
> データグリッドビューは進捗状況を見るために更新していて
> 1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます
進捗状況の確認が必要なほど1行あたりの処理に時間がかかる理由は何でしょうか?
もしその理由が IO など、CPU 以外のところにあるのだとすれば、
Parallel.ForEach を使うこと自体を見直したほうがいいかもしれません
> この処理ならlocalFinallyが最適かもです
正直なところ、更新処理だけ切り出す方法よりも localFinally の方が
適切なケースはまれだと思います
ただ、localFinally の使い方がわかれば更新処理を Parallel.ForEach の外に
切り出す方法もわかると思うので、とりあえず調べてみて損はないと思います
> データグリッドビューは進捗状況を見るために更新していて
> 1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます
進捗状況の確認が必要なほど1行あたりの処理に時間がかかる理由は何でしょうか?
もしその理由が IO など、CPU 以外のところにあるのだとすれば、
Parallel.ForEach を使うこと自体を見直したほうがいいかもしれません
> この処理ならlocalFinallyが最適かもです
正直なところ、更新処理だけ切り出す方法よりも localFinally の方が
適切なケースはまれだと思います
ただ、localFinally の使い方がわかれば更新処理を Parallel.ForEach の外に
切り出す方法もわかると思うので、とりあえず調べてみて損はないと思います
800デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 00:23:24.78ID:qjdpSLXF0 >>799
圧縮ファイルを解凍して中のファイルを加工して再び圧縮し直す
これで1タスクです
1ファイル200MBほどで100ファイル以上処理することが多いです
圧縮解凍、加工は外部ツールを使用しててProcessStartInfoで処理されます
圧縮ファイルを解凍して中のファイルを加工して再び圧縮し直す
これで1タスクです
1ファイル200MBほどで100ファイル以上処理することが多いです
圧縮解凍、加工は外部ツールを使用しててProcessStartInfoで処理されます
801デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 00:35:58.51ID:IU6x2eOV0 >>800
なるほど〜
CPU 処理も IO もあって微妙なところですね
ちなみにその外部ツールはマルチスレッドを使うオプションはないでしょうか?
(例えば 7-zip.exe だと -mmt がそれにあたります)
もし外部ツールがマルチスレッドに対応してるなら、
並列処理はそっちに任せてしまうというのはどうでしょう?
または、外部ツールではなく SharpCompress のようなライブラリを使うことができれば、
C# によるより細かい制御も可能になると思います
なるほど〜
CPU 処理も IO もあって微妙なところですね
ちなみにその外部ツールはマルチスレッドを使うオプションはないでしょうか?
(例えば 7-zip.exe だと -mmt がそれにあたります)
もし外部ツールがマルチスレッドに対応してるなら、
並列処理はそっちに任せてしまうというのはどうでしょう?
または、外部ツールではなく SharpCompress のようなライブラリを使うことができれば、
C# によるより細かい制御も可能になると思います
802デフォルトの名無しさん (アウアウウー Sadb-rtlg)
2018/07/22(日) 00:37:18.94ID:gDKcX53ba 汎用的なものとは思えないし、動けばどうでもいいだろ
俺ならそういうのはいちいちGUI付けずにコンソールでやっちゃうな
俺ならそういうのはいちいちGUI付けずにコンソールでやっちゃうな
803デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 00:45:55.06ID:IU6x2eOV0 >>800
それともう一つ、外部ツールを呼び出すのにデフォルトの ParallelOptions で
Parallel.ForEach を呼び出すのはさすがにまずいと思います
ParallelOptions 自体に MaxDegreeOfParallelism というプロパティがありますし、
ParallelOptions の TaskScheduler プロパティに以下のような自前のスケジューラーを
設定すればより柔軟な並列処理を実現できると思います
同時実行の程度を制限するタスク スケジューラを作成する
https://msdn.microsoft.com/ja-jp/library/ee789351(v=vs.100).aspx
>>802
それは確かにw
完成したソフトによって得られる利益よりソフトを作るコストのほうが大きくなってしまったら
意味がないですからね
(ただしソフトによって得られる利益には開発者のスキルアップも含まれる・・・と言ってみたりw)
それともう一つ、外部ツールを呼び出すのにデフォルトの ParallelOptions で
Parallel.ForEach を呼び出すのはさすがにまずいと思います
ParallelOptions 自体に MaxDegreeOfParallelism というプロパティがありますし、
ParallelOptions の TaskScheduler プロパティに以下のような自前のスケジューラーを
設定すればより柔軟な並列処理を実現できると思います
同時実行の程度を制限するタスク スケジューラを作成する
https://msdn.microsoft.com/ja-jp/library/ee789351(v=vs.100).aspx
>>802
それは確かにw
完成したソフトによって得られる利益よりソフトを作るコストのほうが大きくなってしまったら
意味がないですからね
(ただしソフトによって得られる利益には開発者のスキルアップも含まれる・・・と言ってみたりw)
804デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 00:48:52.21ID:qjdpSLXF0 >>801
7zip使ってます
スレチになるけど
mmtは一つの処理をマルチに実行するものではないでしょうか
圧縮形式は決まってなく複数あるので7zipを使用してます
zip rar lzh以外にも色々
7zip使ってます
スレチになるけど
mmtは一つの処理をマルチに実行するものではないでしょうか
圧縮形式は決まってなく複数あるので7zipを使用してます
zip rar lzh以外にも色々
805デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 00:51:33.52ID:qjdpSLXF0806デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 00:54:31.49ID:IU6x2eOV0 >>804
> mmtは一つの処理をマルチに実行するものではないでしょうか
その通りです
したいことが「進捗状況を表示できるようにすること」と「並列化により処理時間を短縮すること」
だとすれば、それで問題ない(というかむしろその方が望ましい)の思うのですがいかがでしょうか?
> mmtは一つの処理をマルチに実行するものではないでしょうか
その通りです
したいことが「進捗状況を表示できるようにすること」と「並列化により処理時間を短縮すること」
だとすれば、それで問題ない(というかむしろその方が望ましい)の思うのですがいかがでしょうか?
807デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 00:59:41.83ID:IU6x2eOV0 >>805
MaxDegreeOfParallelism を使ってらっしゃるなら
とりあえず致命的にまずいことはないと思います
ただ、CPU だけじゃなく、同時に8つのファイルの読み書きを
求められる HDD さんの気持ちも考えてあげて・・・w
MaxDegreeOfParallelism を使ってらっしゃるなら
とりあえず致命的にまずいことはないと思います
ただ、CPU だけじゃなく、同時に8つのファイルの読み書きを
求められる HDD さんの気持ちも考えてあげて・・・w
808デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 01:01:31.55ID:qjdpSLXF0 >>806
後続の加工処理もありエラー監視も含むので進捗知りたいです
後続の加工処理もありエラー監視も含むので進捗知りたいです
809デフォルトの名無しさん (ワッチョイ 9f7f-0FgR)
2018/07/22(日) 01:03:03.89ID:SZ8yn9810 >>798
localFinallyよりasync/awaitの方が分かりやすいと思う。
private async void button1_Click( object sender, EventArgs e )
{
MessageBox.Show( "このメッセージは必ず表示される" );
await Task.Run( () =>
{
Parallel.ForEach( Enumerable.Repeat( 0, 2 ), i => Invoke( new Action( () => { } ) ) );
} );
MessageBox.Show( "デッドロックするとこのメッセージは表示されない" );
}
localFinallyよりasync/awaitの方が分かりやすいと思う。
private async void button1_Click( object sender, EventArgs e )
{
MessageBox.Show( "このメッセージは必ず表示される" );
await Task.Run( () =>
{
Parallel.ForEach( Enumerable.Repeat( 0, 2 ), i => Invoke( new Action( () => { } ) ) );
} );
MessageBox.Show( "デッドロックするとこのメッセージは表示されない" );
}
810デフォルトの名無しさん (アウアウウー Sadb-rtlg)
2018/07/22(日) 01:04:00.97ID:gDKcX53ba makefile使えば?
数行のMakefile書いて make -j8 するだけだよ
数行のMakefile書いて make -j8 するだけだよ
811デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 01:04:22.38ID:qjdpSLXF0812デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 01:18:41.37ID:IU6x2eOV0 >>808
Parallel.ForEach を使わなくてもそれはできると思うのですがいかがでしょうか?
>>809
確かにおっしゃる通りですね
後は好みの問題ですが、やはり私は1行ごとに Invoke するよりも
パフォーマンス的に有利な localFinally や更新処理の切り出しを推したいですw
>>811
なるほど!そうすれば外部ツールを使っても HDD へのアクセスだけ別に処理できますね
ただ、HDD へのアクセスを別にしようという意識をお持ちで、それだけのスキルもあるのなら、
外部ツールにこだわる必要はないのでは・・・という気もします
あと、メモリは HDD よりはずっと速いですが、CPU キャッシュとかの関係でやっぱり
8 個のファイルを同時に読み出すよりは1つずつの方が良いような気がします
Parallel.ForEach を使わなくてもそれはできると思うのですがいかがでしょうか?
>>809
確かにおっしゃる通りですね
後は好みの問題ですが、やはり私は1行ごとに Invoke するよりも
パフォーマンス的に有利な localFinally や更新処理の切り出しを推したいですw
>>811
なるほど!そうすれば外部ツールを使っても HDD へのアクセスだけ別に処理できますね
ただ、HDD へのアクセスを別にしようという意識をお持ちで、それだけのスキルもあるのなら、
外部ツールにこだわる必要はないのでは・・・という気もします
あと、メモリは HDD よりはずっと速いですが、CPU キャッシュとかの関係でやっぱり
8 個のファイルを同時に読み出すよりは1つずつの方が良いような気がします
813デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 01:27:28.49ID:IU6x2eOV0814デフォルトの名無しさん (ワッチョイ ff81-MwhK)
2018/07/22(日) 01:35:51.92ID:eU7Qw5rc0 そんな処理速度気にするなら複数PC用意できたりしないのかな?
たぶん内製ツールだと思うけど、そういうのって長期保守とかしないならシンプルでさくっとやれる方向を模索したほうがいい気が…
研究開発兼ねてとかだったらいいんだけど
たぶん内製ツールだと思うけど、そういうのって長期保守とかしないならシンプルでさくっとやれる方向を模索したほうがいい気が…
研究開発兼ねてとかだったらいいんだけど
815デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 01:43:37.75ID:qjdpSLXF0816デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
2018/07/22(日) 01:44:34.84ID:qjdpSLXF0 ほな寝ます。詳しくありがとうございました!
もしかしたら明日もっとやべーかもです
もしかしたら明日もっとやべーかもです
817デフォルトの名無しさん (ワンミングク MM7f-ArLl)
2018/07/22(日) 01:59:21.48ID:J1Nh86LOM var block = new ActionBlock<ZipOpParam>(
async (param) => {
await ExecuteZipOpAsync(param);
InvokeUpdateUi(param);
},
new ExecutionDataflowBlockOptions {
MaxDegreeOfParallelism = 8
});
foreach(var p in zipOpParams)
block.Post(p);
block.Complete();
await block.Completion;
async (param) => {
await ExecuteZipOpAsync(param);
InvokeUpdateUi(param);
},
new ExecutionDataflowBlockOptions {
MaxDegreeOfParallelism = 8
});
foreach(var p in zipOpParams)
block.Post(p);
block.Complete();
await block.Completion;
818デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
2018/07/22(日) 03:07:13.11ID:IU6x2eOV0 >>815
> そうです、最も投げやすく勝手にマルチしてくれる便利なParallelさんって聞いて使ってるます
これは私も同じように認識しています
> cpuキャッシュとか考慮せずマルチ=高速って誤認識で走ってきて
これは場合によりけりだと思います
特に今回のように外部ツール側でマルチスレッドにできる場合はツールの呼び出し側では
余計なことをせず外部ツールに任せたほうが高速になる場合が多いと思います
>>817
C# で並列処理を行うならこれは一つの解決策になりそうですね
別の解決策として、新たに参照を追加する必要のない↓の方法とかどうでしょう?
var tasks = new List<Task>();
foreach (var param in zipOpParams)
{
if (tasks.Count == 8) tasks.Remove(await Task.WhenAny(tasks));
tasks.Add(ExecuteZipOpAsync(param).ContinueWith(
_ => InvokeUpdateUi(param),
TaskScheduler.FromCurrentSynchronizationContext()));
}
await Task.WhenAll(tasks);
> そうです、最も投げやすく勝手にマルチしてくれる便利なParallelさんって聞いて使ってるます
これは私も同じように認識しています
> cpuキャッシュとか考慮せずマルチ=高速って誤認識で走ってきて
これは場合によりけりだと思います
特に今回のように外部ツール側でマルチスレッドにできる場合はツールの呼び出し側では
余計なことをせず外部ツールに任せたほうが高速になる場合が多いと思います
>>817
C# で並列処理を行うならこれは一つの解決策になりそうですね
別の解決策として、新たに参照を追加する必要のない↓の方法とかどうでしょう?
var tasks = new List<Task>();
foreach (var param in zipOpParams)
{
if (tasks.Count == 8) tasks.Remove(await Task.WhenAny(tasks));
tasks.Add(ExecuteZipOpAsync(param).ContinueWith(
_ => InvokeUpdateUi(param),
TaskScheduler.FromCurrentSynchronizationContext()));
}
await Task.WhenAll(tasks);
819デフォルトの名無しさん (ワッチョイ 9fe3-ol3M)
2018/07/22(日) 09:28:10.63ID:e8tLYzcQ0 違うexeキックすれば終わりなんやで?
820デフォルトの名無しさん (ワッチョイ d763-ylAy)
2018/07/22(日) 13:48:56.26ID:dLVAOvzX0 オブジェクト指向について勉強しようと思い、クラスを複数作って実行しようとしたら実行ボタンがプロセスにアタッチというよく分からない物に代わりビルドなども出来なくなってしまいました
どうしたら元に戻せるでしょうか
どうしたら元に戻せるでしょうか
821デフォルトの名無しさん (ラクッペ MM0b-3H7b)
2018/07/22(日) 15:37:48.37ID:X/YKRg9/M 参考にした資料がそう(実行ボタンをプロセスにアタッチ)しろと書いているなら
その手法でトラブった時の解決法も資料に書いてあるのでは
提示されたくらいの情報でここで帰ってくる答えは
「ゴミは捨てて作り直せ」
「一旦オブジェクト指向についての記憶を消せ」
だと思う
その手法でトラブった時の解決法も資料に書いてあるのでは
提示されたくらいの情報でここで帰ってくる答えは
「ゴミは捨てて作り直せ」
「一旦オブジェクト指向についての記憶を消せ」
だと思う
822デフォルトの名無しさん (ワッチョイ d763-ylAy)
2018/07/22(日) 19:34:11.94ID:dLVAOvzX0 このように実行ボタンがアタッチ…となりビルドも行えなくなってしまっています…
プログラムは「確かな力が身に付くc#超入門」から取っていて特にプロセスにアタッチに関する記述も無いので恐らく設定どこか変に弄ってしまったのかと思うのですが…
https://i.imgur.com/QK8r2yI.jpg
プログラムは「確かな力が身に付くc#超入門」から取っていて特にプロセスにアタッチに関する記述も無いので恐らく設定どこか変に弄ってしまったのかと思うのですが…
https://i.imgur.com/QK8r2yI.jpg
823デフォルトの名無しさん (ワッチョイ 9fd2-4ryk)
2018/07/22(日) 19:59:19.28ID:zgYMpfBL0 >>822
ソリューションエクスプローラーで当該プロジェクトを右クリック→スタートアッププロジェクトに設定(みたいなやつ)を選択
ソリューションエクスプローラーで当該プロジェクトを右クリック→スタートアッププロジェクトに設定(みたいなやつ)を選択
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【高市朗報】 日本政府「一昨年は1300億円。去年も防衛費が1100億円余ったw」 日本の防衛費は充分足りてる事が判明。増やす必要無し [485983549]
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 【速報】51歳まで自衛隊になれるように法改正ww [347751896]
