- 1 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 19:32:42.28 ID:70UTtyrn0.net]
- 「どんなにくだらない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/ ■コードを貼る場合は↓を使いましょう。 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 referencesource.microsoft.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
- 792 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 13:07:56.71 ID:aSN8UD58d.net]
- バケツリレーの喩えでもスループットは変わっちゃうんだよな。
受け側に送信側が送信する総量より大きいバッファを持てば、スループットは水の入ったバケツを運ぶ時間に依存するだけで済む。 キューがそれより遅ければバケツを引き渡すために時間が余計にかかるわけだから、スループットは落ちる。 送信側にキューを持ったところで、送信側は送信処理に対して同期的に処理しないだけで済むだけで、そのキューからの送出がどんどん遅れるだろう。受け取ってくれないなら。
- 793 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 13:54:59.01 ID:gB9GbXMP0.net]
- >>693,695「スレッドを協調して動かしたいです、制約あるんで」
凡人の回答「○○使えよ」 天才の回答「制約が悪い」
- 794 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 21:28:53.81 ID:OAXfUTo30.net]
- c=(a*a+b*b)
c=System.Math.Sprt(c) これでcの平方根を出そうとしたのですがSystem.MathにSprtの定義がありませんと出ます sharedevelopを使っています
- 795 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 21:32:35.58 ID:XkM+nwLwM.net]
- SQRT
- 796 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 21:35:00.80 ID:6RzmSKAyM.net]
- エディタの不具合だろ
SharpDevelopなどという化石は今すぐアンインストールしてVSかVSCodeを使え
- 797 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 21:44:14.53 ID:XkM+nwLwM.net]
- 平方根の綴りが違う
- 798 名前:デフォルトの名無しさん mailto:sage [2018/07/20(金) 22:17:34.54 ID:7jIkQpVM0.net]
- square rootだからねぇ
- 799 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 00:28:32.93 ID:WdWG9X6t0.net]
- ありがとうございます 解決しました
- 800 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 06:52:38.43 ID:HGZKU0EK0.net]
- スパート!
- 801 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 13:53:42.54 ID:aw31/LTY0.net]
- >>754
もともと >キューを持つべきなのはリクエストを送る側ではなく受ける側なんじゃないか、 にたいして >送る側で待たないと仕事を溜め込んだ受け側が最悪死ぬか無視する様になるぞ。 ってレスしてるのが発端なんだが どうでもいい良いしよそでやって欲しいけど
- 802 名前:デフォルトの名無しさん [2018/07/21(土) 14:14:10.21 ID:IqGIA9LU0.net]
- 話題が一変してんのにわざわざ掘り返すなよw
言ってる事とやってる事が矛盾してんぞw
- 803 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 15:42:07.60 ID:8fBGWCJL0.net]
- レスバトルって奴だろ
最後に言及した方が勝ちなんだって これ見るといつも思うが、こういう馬鹿には自分自身を見る自意識がないのかね
- 804 名前:デフォルトの名無しさん [2018/07/21(土) 20:00:10.16 ID:rsQP0F780.net]
- たすけて!
Parallel.ForEachの中でデータグリッドの内容を更新してるんだけど 途中で爆発します データグリッド全体に✕って出て非表示になる データグリッドの更新処理はlockで囲ってても競合は起きちゃうものですか?
- 805 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:05:25.49 ID:CBiNHREt0.net]
- まず原因を切り分けろ
Parallel.ForEachを外しても爆発するか確認するんだ
- 806 名前:デフォルトの名無しさん [2018/07/21(土) 20:07:27.16 ID:rsQP0F780.net]
- >>770
パラレルの外出すと機能するけど そうすると全処理終わってから一回しか更新されない…😌
- 807 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:08:57.28 ID:gktKld7A0.net]
- >>771
UIはUIスレッドからしか操作出来ない Parallel.ForEachの処理は別スレッドで実行される
- 808 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:10:43.13 ID:BEEMYUE30.net]
- >>771
Action<TLocal> local
- 809 名前:Finally の引数をとるオーバーロードを使ってみたらどうでしょう? []
- [ここ壊れてます]
- 810 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:10:44.76 ID:H6KFndt4M.net]
- >>768
君のレスを見るといつも思うが、こういう特徴のある口調のレスを繰り返す人には自分自身を見る自意識がないのかね
- 811 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:10:59.84 ID:nH897ECr0.net]
- invokeするか、ContextにPostするしか無いんじゃないかな
- 812 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:22:09.68 ID:3bWsh9tI0.net]
- >>774
>>774
- 813 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:22:10.55 ID://qCwfF7a.net]
- 爆発w
- 814 名前:デフォルトの名無しさん [2018/07/21(土) 20:24:00.77 ID:rsQP0F780.net]
- >>772
>>773 >>775 Invokeでググりました まさにこの疑問を解決するための機能でした 有難う御座います
- 815 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:35:04.73 ID:BEEMYUE30.net]
- 私は >>773 ですが Invoke について自分があまり良く分かってない気がしてきたので
詳しい方がいらっしゃったら教えてください UIスレッドで Parallel.ForEach を呼ぶとUIスレッドをつかんだまま並列処理が実行されて、 その並列処理のスレッドで Invoke を使うとデッドロックしてしまう気がするのですが 実際はそういうことはないのでしょうか?
- 816 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 20:36:04.76 ID:aw31/LTY0.net]
- マルチスレッドにしてInvokeしまくると結局パフォーマンスがガタ落ちしたりするがな
- 817 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:15:58.91 ID:BEEMYUE30.net]
- >>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 } に変える → デッドロックする
- 818 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:16:52.59 ID:1oayVCQs0.net]
- >>778
いいってことよ(´・ω・`)b
- 819 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:18:17.40 ID:nH897ECr0.net]
- >>779
並列処理はUIスレッドではないスレッドで行われるよ。 いや、UIスレッドで行われるとは限らない、と言う言い方の方が正しいかな。 UIスレッドを掴んだままの意味がわからんが、挙動が謎なら、ブレークポイントつけて実行して、どのスレッドが何をしてるかを把握してはいかがだろうか。 今どのスレッドを使ってるかは表示されてるから。
- 820 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:20:54.98 ID:nH897ECr0.net]
- WPFかあ
- 821 名前:デフォルトの名無しさん [2018/07/21(土) 21:25:21.58 ID:VW1YO4fA0.net]
- Windows版VSCodeで、monoを構文解析用のコンパイラとして指定することってできないのかな?
Unityの.Net4.0用プロジェクトで、数ヶ月前までは、.Net3.5用のSystem.Data.DLLを読み込んでくれたのにさあ VisualStudioを更新したら構文解析用のコンパイラが変わったのか、古い.net3.5用のDLLを読み込んでくれなくて赤波線だらけになっちゃったぜ 4.0用のDLLもあるわけだけど、それを入れるとUnityのmonoの方でなぜかエラーを起こすし・・・どうしたら良いものか・・・・
- 822 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:33:11.65 ID:BEEMYUE30.net]
- >>783-784
レスありがとうございます > いや、UIスレッドで行われるとは限らない、と言う言い方の方が正しいかな。 >>781 で new int[] { 0 } だとデッドロックしないあたり、まさにそんな感じですね > WPFかあ >>769 でデータグリッドと書かれていたので、 今の Windows フォームなら DataGrid ではなく DataGridView かなと思って WPF の方で試してしまいました(汗 Windows フォームだと挙動が変わるならそれも知っておきたいので 今からそっちでも試してみ
- 823 名前:ます []
- [ここ壊れてます]
- 824 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 21:36:50.95 ID:BEEMYUE30.net]
- 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("デッドロックするとこのメッセージは表示されない"); }
- 825 名前:デフォルトの名無しさん [2018/07/21(土) 22:26:34.46 ID:rsQP0F780.net]
- えーわからん…
ちなみにフォームですビューです つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか それともThread生成してその中でParallelすれば良かったり…?これはすごい破綻してる気がしますが uiスレッドから切り離した他スレッドから安全にuiを制御するなんて考えが可笑しいんでしょうか
- 826 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 22:44:23.68 ID:BEEMYUE30.net]
- >>788
あくまで私一人の考えですが・・・ [1] Invoke を使うと >>779 に書いたような理由でデッドロックするので Parallel.ForEach でUIスレッドを使いたいなら >>773 のようにすべき [2] しかし、同じく >>779 に書いたように Parallel.ForEach はUIスレッドを つかんだまま並列処理を行うのでデータグリッドの更新処理だけ Parallel.ForEach から切り出してもほとんど同じなのでは? (一応 localFinally 中も他のスレッドは動けるので そこで更新処理を行う方がいい場合もあるかもしれない) [3] 並列処理が必要なほど大きな処理を行うなら、 一度UIスレッドを手放す選択肢も考えてみては? ただ、Invoke がダメだと考えている人間自体が私だけのような気もするので 他の方の意見も聞いてみたほうがいいと思います あと、[3] に関しては場合によりけりだと思うので、 具体的な処理内容を教えていただければ私の考えをお伝えしたいと思います
- 827 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 22:55:07.29 ID:gktKld7A0.net]
- >>787
そのコードだと、button1_Click()がずっとUIスレッドを握ったまま。 だから、Parallelの別スレッドでInvoke()しようとしてもUIスレッドに遷移出来なくて固まる。
- 828 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:00:46.86 ID:gktKld7A0.net]
- 既に>>779に書いてあったね。その通り。
- 829 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:10:20.56 ID:BEEMYUE30.net]
- >>790-791
レスありがとうございます >>779 の考えで正しいのか不安だったのですがお陰様で自身が持てました 他に何かおかしなことを言ってしまっていたら教えていただけると嬉しいです >>788 >>789 はレスとしてとっ散らかっている気がしてきたので一問一答で答えてみます > つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか Parallel を UI スレッドで実行する場合は悪手というか、致命的だと思います > それともThread生成してその中でParallelすれば良かったり…?これはすごい破綻してる気がしますが それなら期待通りの動作にはなると思います。ただ、確かにあまりいい方法ではないと思います > uiスレッドから切り離した他スレッドから安全にuiを制御するなんて考えが可笑しいんでしょうか 正しく Invoke を使えば問題ないと思います しかし今回の件からもわかるように、Invoke を正しく使うのはなかなか難しいようです
- 830 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:21:21.79 ID:R8KbBSh90.net]
- .Invokeではなく.BeginInvokeを使うのはどう?
- 831 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:30:54.97 ID:BEEMYUE30.net]
- >>793
それって > それともThread生成してその中でParallelすれば良かったり…? よりも更にワチャワチャする気がするのですがどうなんでしょう? ワチャワチャって具体的にどういうことなのか 説明を求められれば頑張ってみようと思いますが、 自分の考えがあっているかも、それをうまく説明できるかどうかも 自信がないので、詳しい方の意見を聞けると嬉しいです
- 832 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:41:01.32 ID://qCwfF7a.net]
- >>794
そんな難しい話じゃないっすよw BeginInvokeは非同期に実行される、つまりキューにデリゲートを入れたらすぐに処理を返すので Invokeのように自分で自分の終了を待機する状態に陥らない
- 833 名前:デフォルトの名無しさん [2018/07/21(土) 23:43:41.94 ID:rsQP0F780.net]
- >>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("デッドロックするとこのメッセージは表示されない"); }
- 834 名前:デフォルトの名無しさん mailto:sage [2018/07/21(土) 23:55:52.12 ID:BEEMYUE30.net]
- >>795
レスありがとうございます おっしゃる通りBeginInvokeはキューにデリゲートを入れたらすぐに処理を返すので 次から次へとキューが入って大変なことになりそう
- 835 名前:E・・と思ったのですが、
そんなに心配することではないのでしょうか >>796 それで一応動くと思いますが、Parallel.ForEach が終わる前に 二つ目の MessageBox.Show の行に移るので注意してください ・・・というか、localFinally を使ったり更新処理だけを切り出したりはダメっぽいですか? ダメだと考えられた理由を教えていただければ何かアイディアを提供できるかもしれません [] - [ここ壊れてます]
- 836 名前:デフォルトの名無しさん [2018/07/22(日) 00:03:07.23 ID:qjdpSLXF0.net]
- >>797
データグリッドビューは進捗状況を見るために更新していて 1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます ダメではなく単純に自分が分かってないだけです この処理ならlocalFinallyが最適かもです 深く調べてみます
- 837 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:13:38.17 ID:IU6x2eOV0.net]
- >>798
> データグリッドビューは進捗状況を見るために更新していて > 1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます 進捗状況の確認が必要なほど1行あたりの処理に時間がかかる理由は何でしょうか? もしその理由が IO など、CPU 以外のところにあるのだとすれば、 Parallel.ForEach を使うこと自体を見直したほうがいいかもしれません > この処理ならlocalFinallyが最適かもです 正直なところ、更新処理だけ切り出す方法よりも localFinally の方が 適切なケースはまれだと思います ただ、localFinally の使い方がわかれば更新処理を Parallel.ForEach の外に 切り出す方法もわかると思うので、とりあえず調べてみて損はないと思います
- 838 名前:デフォルトの名無しさん [2018/07/22(日) 00:23:24.78 ID:qjdpSLXF0.net]
- >>799
圧縮ファイルを解凍して中のファイルを加工して再び圧縮し直す これで1タスクです 1ファイル200MBほどで100ファイル以上処理することが多いです 圧縮解凍、加工は外部ツールを使用しててProcessStartInfoで処理されます
- 839 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:35:58.51 ID:IU6x2eOV0.net]
- >>800
なるほど〜 CPU 処理も IO もあって微妙なところですね ちなみにその外部ツールはマルチスレッドを使うオプションはないでしょうか? (例えば 7-zip.exe だと -mmt がそれにあたります) もし外部ツールがマルチスレッドに対応してるなら、 並列処理はそっちに任せてしまうというのはどうでしょう? または、外部ツールではなく SharpCompress のようなライブラリを使うことができれば、 C# によるより細かい制御も可能になると思います
- 840 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:37:18.94 ID:gDKcX53ba.net]
- 汎用的なものとは思えないし、動けばどうでもいいだろ
俺ならそういうのはいちいちGUI付けずにコンソールでやっちゃうな
- 841 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:45:55.06 ID:IU6x2eOV0.net]
- >>800
それともう一つ、外部ツールを呼び出すのにデフォルトの ParallelOptions で Parallel.ForEach を呼び出すのはさすがにまずいと思います ParallelOptions 自体に MaxDegreeOfParallelism というプロパティがありますし、 ParallelOptions の TaskScheduler プロパティに以下のような自前のスケジューラーを 設定すればより柔軟な並列処理を実現できると思います 同時実行の程度を制限するタスク スケジューラを作成する https://msdn.microsoft.com/ja-jp/library/ee789351(v=vs.100).aspx >>802 それは確かにw 完成したソフトによって得られる利益よりソフトを作るコストのほうが大きくなってしまったら 意味がないですからね (ただしソフトによって得られる利益には開発者のスキルアップも含まれる・・・と言ってみたりw)
- 842 名前:デフォルトの名無しさん [2018/07/22(日) 00:48:52.21 ID:qjdpSLXF0.net]
- >>801
7zip使ってます スレチになるけど mmtは一つの処理をマルチに実行するものではないでしょうか 圧縮形式は決まってなく複数あるので7zipを使用してます zip rar lzh以外にも色々
- 843 名前:デフォルトの名無しさん [2018/07/22(日) 00:51:33.52 ID:qjdpSLXF0.net]
- >>803
タスクスケジューラー調べてみます良さそうですね i7使用しててMaxDegreeOfParallelismは常に8で実行してます 8スレッドで画面カッチカチで処理してます 暴力です
- 844 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:54:31.49 ID:IU6x2eOV0.net]
- >>804
- 845 名前:
> mmtは一つの処理をマルチに実行するものではないでしょうか その通りです したいことが「進捗状況を表示できるようにすること」と「並列化により処理時間を短縮すること」 だとすれば、それで問題ない(というかむしろその方が望ましい)の思うのですがいかがでしょうか? []- [ここ壊れてます]
- 846 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 00:59:41.83 ID:IU6x2eOV0.net]
- >>805
MaxDegreeOfParallelism を使ってらっしゃるなら とりあえず致命的にまずいことはないと思います ただ、CPU だけじゃなく、同時に8つのファイルの読み書きを 求められる HDD さんの気持ちも考えてあげて・・・w
- 847 名前:デフォルトの名無しさん [2018/07/22(日) 01:01:31.55 ID:qjdpSLXF0.net]
- >>806
後続の加工処理もありエラー監視も含むので進捗知りたいです
- 848 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:03:03.89 ID:SZ8yn9810.net]
- >>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( "デッドロックするとこのメッセージは表示されない" ); }
- 849 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:04:00.97 ID:gDKcX53ba.net]
- makefile使えば?
数行のMakefile書いて make -j8 するだけだよ
- 850 名前:デフォルトの名無しさん [2018/07/22(日) 01:04:22.38 ID:qjdpSLXF0.net]
- >>807
解答先は8GBのRamディスクです メモリに物理ファイルおいてでここで加工して再圧縮してその後HDDに移動させてます
- 851 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:18:41.37 ID:IU6x2eOV0.net]
- >>808
Parallel.ForEach を使わなくてもそれはできると思うのですがいかがでしょうか? >>809 確かにおっしゃる通りですね 後は好みの問題ですが、やはり私は1行ごとに Invoke するよりも パフォーマンス的に有利な localFinally や更新処理の切り出しを推したいですw >>811 なるほど!そうすれば外部ツールを使っても HDD へのアクセスだけ別に処理できますね ただ、HDD へのアクセスを別にしようという意識をお持ちで、それだけのスキルもあるのなら、 外部ツールにこだわる必要はないのでは・・・という気もします あと、メモリは HDD よりはずっと速いですが、CPU キャッシュとかの関係でやっぱり 8 個のファイルを同時に読み出すよりは1つずつの方が良いような気がします
- 852 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:27:28.49 ID:IU6x2eOV0.net]
- >>809 >>812
いや、でも進捗状況を表示するとなると結局どこかで await は使うことになりそうですね ただ私としては >>800 のような処理なら Parallel.ForEach は必要ないと考えていて、 foreach (ファイルのループ) { foreach (進捗状況のループ) { await (進捗状況の更新待ち); (進捗状況を画面に反映); } (1ファイルの完了を画面に反映); } のような感じで十分だと思うのですが、どんなもんでしょうか?
- 853 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:35:51.92 ID:eU7Qw5rc0.net]
- そんな処理速度気にするなら複数PC用意できたりしないのかな?
たぶん内製ツールだと思うけど、そういうのって長期保守とかしないならシンプルでさくっとやれる方向を模索したほうがいい気が… 研究開発兼ねてとかだったらいいんだけど
- 854 名前:デフォルトの名無しさん [2018/07/22(日) 01:43:37.75 ID:qjdpSLXF0.net]
- >>812
そうです、最も投げやすく勝手にマルチしてくれる便利なParallelさんって聞いて使ってるます 別の手段があればコレに拘ることはないと思ってます >>813 cpuキャッシュとか考慮せずマルチ=高速って誤認識で走ってきて その中で最適化してきたので localfinally使用したときと 1ファイルの処理の差も検証してみたいと思います >>814 ただの趣味なんですPC一台で 複雑でも効
- 855 名前:果があれば試したいと考えています []
- [ここ壊れてます]
- 856 名前:デフォルトの名無しさん [2018/07/22(日) 01:44:34.84 ID:qjdpSLXF0.net]
- ほな寝ます。詳しくありがとうございました!
もしかしたら明日もっとやべーかもです
- 857 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 01:59:21.48 ID:J1Nh86LOM.net]
- 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;
- 858 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 03:07:13.11 ID:IU6x2eOV0.net]
- >>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);
- 859 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 09:28:10.63 ID:e8tLYzcQ0.net]
- 違うexeキックすれば終わりなんやで?
- 860 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 13:48:56.26 ID:dLVAOvzX0.net]
- オブジェクト指向について勉強しようと思い、クラスを複数作って実行しようとしたら実行ボタンがプロセスにアタッチというよく分からない物に代わりビルドなども出来なくなってしまいました
どうしたら元に戻せるでしょうか
- 861 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 15:37:48.37 ID:X/YKRg9/M.net]
- 参考にした資料がそう(実行ボタンをプロセスにアタッチ)しろと書いているなら
その手法でトラブった時の解決法も資料に書いてあるのでは 提示されたくらいの情報でここで帰ってくる答えは 「ゴミは捨てて作り直せ」 「一旦オブジェクト指向についての記憶を消せ」 だと思う
- 862 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 19:34:11.94 ID:dLVAOvzX0.net]
- このように実行ボタンがアタッチ…となりビルドも行えなくなってしまっています…
プログラムは「確かな力が身に付くc#超入門」から取っていて特にプロセスにアタッチに関する記述も無いので恐らく設定どこか変に弄ってしまったのかと思うのですが… https://i.imgur.com/QK8r2yI.jpg
- 863 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 19:59:19.28 ID:zgYMpfBL0.net]
- >>822
ソリューションエクスプローラーで当該プロジェクトを右クリック→スタートアッププロジェクトに設定(みたいなやつ)を選択
- 864 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:02:21.74 ID:2+gJNW3/0.net]
- >>822
言語じゃなくVisual Studioのスレで聞かないと それはプロジェクトが読み込まれておらずソースだけ読み込まれている状態
- 865 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:13:04.82 ID:dLVAOvzX0.net]
- >>823
やってみたのですがそれらしき項目がありませんでした…
- 866 名前:デフォルトの名無しさん mailto:sage [2018/07/22(日) 20:13:36.52 ID:dLVAOvzX0.net]
- >>824
なるほどありがとうございます vsのスレで聞いてきます
- 867 名前:デフォルトの名無しさん [2018/07/23(月) 00:19:07.43 ID:glq8mOZ10.net]
- revertしろや。意味もわからんだろうがな。
- 868 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 01:08:12.51 ID:7plYbgct0.net]
- >>827
じゃあなぜそれを言ったのでしょうか…
- 869 名前:デフォルトの名無しさん mailto:sage [2018/07/23(月) 02:22:37.56 ID:UcAZ2Awl0.net]
- ナチュラルマウンティング
- 870 名前:デフォルトの名無しさん [2018/07/23(月) 09:39:14.18 ID:GAsLkYgIM.net]
- >>828
ググって勉強しろということだ
- 871 名前:デフォルトの名無しさん mailto:sage [2018/07/24(火) 22:19:33.23 ID:KA6Loe2t0.net]
- もしかしてASP.NETってJavaみたいなリッチで無料の拡張フレームワーク無いの?
- 872 名前:デフォルトの名無しさん mailto:sage [2018/07/24(火) 22:26:36.90 ID:9BkrBjXcd.net]
- >>831
? ASP.NET自体が無料のフレームワークだろ
- 873 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 13:43:12.86 ID:rJjy6ITv0.net]
- きもは「リッチ」で「拡張」ってことだろ
つまりどんなものを指してるのか全く分からんがな
- 874 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 14:20:20.79 ID:HwnrNSAwM.net]
- Classic ASP.NETは拡張性とかガン無視でMSがデフォルトで提供するお仕着せのものだけ覚りゃ一通りできるっていうドカタ向けフレームワークだぞ
Springみたいなのがお好みならASP.NET Core使え
- 875 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 17:37:41.34 ID:rJjy6ITv0.net]
- >>834
Classic ASP.NETがどのバージョンを指してるか知らんが拡張性無視とか笑わせる HTTPハンドラとかモジュールとか自作したらほぼすべてカスタムできたわけだが
- 876 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 22:02:27.35 ID:LjfK0h7i0.net]
- すれ違いで書き込んだ者ですが、こういう連続線をC♯を使って、方眼風の画面にクリックして一番近い座標点から始まり次のクリック座標点って感じで連続線を描きたいんですが、なんか参考になる本だとかサイトってありませんか?
https://i.imgur.com/Emj85bk.jpg
- 877 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 22:16:28.94 ID:QC64Azkrd.net]
- >>836
Graphicsクラスを使って自分で線描画するのが手っ取り早いからこのあたりかな https://dobon.net/vb/dotnet/graphics/drawrectangle.html
- 878 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 22:56:32.30 ID:oxjpcelO0.net]
- >>837
そのページは閉じた図形だな。 >>836 同じdobonで 折れ線を描く(DrawLinesメソッド) https://dobon.net/vb/dotnet/graphics/drawline.html#fold
- 879 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 23:40:00.99 ID:sTP5vmoc0.net]
- >>834
ASP.NET CoreってPrimeFacesのような無料で便利なライブラリあるの? 商用ならWijmoやTelerik色など々あるようだけど有料はちょっとね 拡張すりゃ出来るとかハンドラ書けばできるとかそんなのは当たり前の事だけど そんな車輪の再発明に工数が出るわけがないし
- 880 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 23:47:26.31 ID:QC64Azkrd.net]
- 無料ライブラリなんかnugetでなんぼでもインストールできるだろ
- 881 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 00:19:33.20 ID:aLLF0qhM0.net]
- >>840
具体的にはどのパッケージですか?
- 882 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 07:51:00.77 ID:qCaaK3zMa.net]
- >>839
ASP.NET CoreはMVCだからGUIは単なるHTML ASP.NET Core関係なく普通にHTML/JS/CSSのライブラリを拾ってきて使えばよい
- 883 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 14:29:55.52 ID:ujIuVWNLr.net]
- ライブラリ不要レベルやん
マウス位置とライン引くだけだし
- 884 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 14:36:43.63 ID:rEhHpU7y0.net]
- PictureBoxがあればなんだってできるみたいな
- 885 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 16:41:36.62 ID:EX1pNRMXM.net]
- 文字の折返しさえできたら実はなんでもいい
- 886 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 16:48:08.19 ID:lkW5ctngd.net]
- >>843
誰もライブラリ使えなんて言ってないだろ
- 887 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:08:23.29 ID:BBodZQOSM.net]
- >>842
そういう使い方はNGですね サーバーサイドレンダリングが基本のフレームワークとクライアントサイドのフレームワークは常識的に考えてインピーダンスミスマッチでしょう (primefacesのように最初からセットで設計されてるならともかく) それならまだaspnet coreはapiに徹してang
- 888 名前:ularやreact使ったほうがマシです []
- [ここ壊れてます]
- 889 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:18:37.89 ID:IphAgnBQM.net]
- >>847
なんでクライアントフレームワークの話になるんだ? AngularやReactのようなものに依存せず単独でページに組み込めるHTML/JS/CSSのコンポーネントなんか腐るほどあるだろ
- 890 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:30:12.58 ID:36qwSZL10.net]
- C#で、VPN経由でCiscoのL2スイッチにログインしてフォワーディングデータベースと各ポートのステータスを取得したいんですが、
簡単に解説しているサイトはないでしょうか? クライアントを動かすPC - HUB - NATルーター - VPNルーター - ネット - VPNルーター - HUB - Ciscoルーター - 目当てのCisco L2スイッチ ていう状態です。
- 891 名前:デフォルトの名無しさん [2018/07/26(木) 19:41:22.79 ID:jgVPt9Lg0.net]
- LinQの中身ってfor文ってホント?
- 892 名前:デフォルトの名無しさん mailto:sage [2018/07/26(木) 19:42:46.48 ID:CSIl69XB0.net]
- アイドルグループの中身は知りません
|

|