「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part133
http://mevius.5ch.net/test/read.cgi/tech/1510056685/
■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■コードを貼る場合は↓を使いましょう。
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#(初心者用) Part134
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0f9a-KsIq)
2017/11/29(水) 19:23:58.05ID:GNLsbK4F029デフォルトの名無しさん (ワッチョイ 9fd2-SaVx)
2017/12/11(月) 21:50:44.91ID:xzgxDEt/0 >>28
あほ
あほ
30デフォルトの名無しさん (ワッチョイ 97a5-fvxL)
2017/12/11(月) 21:54:52.65ID:f/7OfSkR031デフォルトの名無しさん (ワッチョイ 9fd2-SaVx)
2017/12/11(月) 21:57:48.40ID:xzgxDEt/0 >>30
大変だからというか、テスト目的と関係ないAPIやDBアクセスに依存しないようにするため
大変だからというか、テスト目的と関係ないAPIやDBアクセスに依存しないようにするため
32デフォルトの名無しさん (ワッチョイ ff81-tojf)
2017/12/11(月) 22:30:20.58ID:oxZtEftd0 こういう奴らってサーバーがAWSとかGAEのサーバーが503で落ちてる時のテストとかどうやってんの?
DoS掛けて落としてるの?
DoS掛けて落としてるの?
33デフォルトの名無しさん (ワッチョイ 9fd2-SaVx)
2017/12/11(月) 22:32:42.57ID:xzgxDEt/0 >>32
テストしないんだろ
テストしないんだろ
34デフォルトの名無しさん (ブーイモ MMbb-T+jR)
2017/12/12(火) 12:55:00.41ID:IcKwzfnVM サーバーが落ちてる状態をスタブ/モックで再現すればいいんちゃう?
35デフォルトの名無しさん (ドコグロ MMeb-45bT)
2017/12/12(火) 13:38:31.25ID:55mcEBCKM そういう話をしてるんだが...
36デフォルトの名無しさん (ワッチョイ d716-tojf)
2017/12/12(火) 14:04:29.84ID:/mkMVrEb0 ニホンゴムズカシイネ
37デフォルトの名無しさん (ワッチョイ 97a5-1g/A)
2017/12/12(火) 22:16:10.60ID:TlJgX2b/0 プログラミング始めたてなんだけど、CSVファイルの先頭何行を無視してそれ以外のデータをデータベースに入れたいって状況になったんだけど、経験者の人はめっちゃ簡単だよって言ってて、
でも俺には全く想像もつかなくて、プログラミング出来る人の頭の中はほんとどうなってるんだ…
やっぱみんなもこれくらいのコード書くのは楽勝なの?
でも俺には全く想像もつかなくて、プログラミング出来る人の頭の中はほんとどうなってるんだ…
やっぱみんなもこれくらいのコード書くのは楽勝なの?
38デフォルトの名無しさん (ワッチョイ b781-9VJ3)
2017/12/12(火) 22:19:09.90ID:lT+kB2MF0 >>37
一瞬でアルゴ思いつくけど、おまえやばくね?
一瞬でアルゴ思いつくけど、おまえやばくね?
39デフォルトの名無しさん (ワッチョイ 97a5-1g/A)
2017/12/12(火) 22:23:02.58ID:TlJgX2b/040デフォルトの名無しさん (ワッチョイ ff9a-StTJ)
2017/12/12(火) 22:33:48.31ID:CW11BSat0 >>37
テキストの数行をスキップするのならすぐできるだろ。それがCSVになるだけ
CSVのパーサーについては
https://dobon.net/vb/dotnet/file/readcsvfile.html
にいくつもやり方が乗っている
ネットで調べればC#初心者でもできる案件
テキストの数行をスキップするのならすぐできるだろ。それがCSVになるだけ
CSVのパーサーについては
https://dobon.net/vb/dotnet/file/readcsvfile.html
にいくつもやり方が乗っている
ネットで調べればC#初心者でもできる案件
41デフォルトの名無しさん (ワッチョイ 9fd2-LLtl)
2017/12/12(火) 23:21:09.16ID:5Qo60rlq0 いっぺんに全部やろうとするんじゃなくて、小さい作業に分解して考えるんだよ
今回なら「先頭数行を無視してテキストファイル読み込む」にCSVは関係ないでしょ?まず欲しい分だけ読み込んで、CSVとしてパースするのはその後に考えればいい
ググって出てくるくらいまで分解すれば、あとは組み合わせておしまい
今回なら「先頭数行を無視してテキストファイル読み込む」にCSVは関係ないでしょ?まず欲しい分だけ読み込んで、CSVとしてパースするのはその後に考えればいい
ググって出てくるくらいまで分解すれば、あとは組み合わせておしまい
42デフォルトの名無しさん (ワッチョイ ff9a-StTJ)
2017/12/12(火) 23:28:56.01ID:CW11BSat0 >>41
>今回なら「先頭数行を無視してテキストファイル読み込む」
要素内に改行がある場合(めったにないが)を想定しなきゃならないので先にパーサーを通す必要がある
元の要件が「CSVファイルの先頭何行を無視して」だから
>今回なら「先頭数行を無視してテキストファイル読み込む」
要素内に改行がある場合(めったにないが)を想定しなきゃならないので先にパーサーを通す必要がある
元の要件が「CSVファイルの先頭何行を無視して」だから
43デフォルトの名無しさん (ワッチョイ 9fa4-jOus)
2017/12/13(水) 00:33:52.07ID:dUmCylYF0 >>42
この場合、先頭数行はヘッダーでcsvじゃないのでは
この場合、先頭数行はヘッダーでcsvじゃないのでは
44デフォルトの名無しさん (ドコグロ MMdf-45bT)
2017/12/13(水) 07:16:49.88ID:55R6yVv7M まずは
・CSV の先頭になんかワケわからん行がくっついてる
のか
・CSV のデータを何件か読み飛ばす
のかをはっきりしろって話だわな
・CSV の先頭になんかワケわからん行がくっついてる
のか
・CSV のデータを何件か読み飛ばす
のかをはっきりしろって話だわな
45デフォルトの名無しさん (ワッチョイ 3703-ZqID)
2017/12/13(水) 07:25:32.55ID:Iqcr0fg80 どうせ読み飛ばすんだからどっちでもええやろそんなもんw
46デフォルトの名無しさん (アウアウウー Sa67-fOQO)
2017/12/22(金) 02:36:25.35ID:agnD/jLFa 向こう使い終わったな
47デフォルトの名無しさん (スププ Sd1f-U61R)
2017/12/22(金) 04:56:06.32ID:6xfAUU/Sd ここ数日ここ見てたんだが自称上級者様がドヤ顔してるだけのスレだな
48デフォルトの名無しさん (アウアウウー Sa67-fOQO)
2017/12/22(金) 06:19:42.32ID:agnD/jLFa49デフォルトの名無しさん (ワッチョイ 6302-+TNz)
2017/12/22(金) 09:45:16.77ID:Vx5ddxy90 ワードサラダボーイがいないスレ
50デフォルトの名無しさん (ガックシ 067f-Iw9I)
2017/12/22(金) 09:53:06.84ID:8f8y8qIA6 それは何ですか?
51デフォルトの名無しさん (ワッチョイ 9306-buzn)
2017/12/22(金) 09:55:25.36ID:oR3DRk2W0 会計システムはクラサバが最低限の要件なので、計算はDBでやるからクラス分けなど何の役にも立たないし却って邪魔だ
彼はクラサバと無縁なスタンドアローンの世界に住んでいるのかもしれんね
彼はクラサバと無縁なスタンドアローンの世界に住んでいるのかもしれんね
52デフォルトの名無しさん (ブーイモ MM27-bebx)
2017/12/22(金) 10:08:25.66ID:2CqGXpCvM スタンドアロンだとして、どういうデータ設計したら費用項目ごとにクラスができるんだろうね
日付, 費用種別コード, 金額
まさかこんなタプルで管理してるんだろうか
日付, 費用種別コード, 金額
まさかこんなタプルで管理してるんだろうか
53デフォルトの名無しさん (ワッチョイ ffb3-6aYH)
2017/12/22(金) 10:17:07.48ID:sp7ymsVp0 自称上級者様ご降臨〜 w
54デフォルトの名無しさん (ブーイモ MM27-vkjg)
2017/12/22(金) 10:23:52.41ID:lyRs/gAjM そ、ギョーミーな戦場ではオブジェクト指向などと言う玩具の武器は役に立たない
55デフォルトの名無しさん (ワッチョイ ffd2-Xao7)
2017/12/22(金) 10:26:29.36ID:xQ825djR0 >>54
いまだにこんな老害がいるからね
いまだにこんな老害がいるからね
56デフォルトの名無しさん (ブーイモ MM27-vkjg)
2017/12/22(金) 10:32:48.81ID:lyRs/gAjM 何をいっておる、LinqもLambdaも戦場の小火器として使えるが腐ったオブジェクト指向など使えぬわ
57デフォルトの名無しさん (ワッチョイ 634b-Iw9I)
2017/12/22(金) 10:56:00.35ID:pMoYdCae0 関数型がいいって言いたいの?
58デフォルトの名無しさん (ブーイモ MM27-vkjg)
2017/12/22(金) 10:59:19.90ID:lyRs/gAjM 腐ったオブジェクト指向脳で単純なものを複雑にするヤツが大嫌いなだけ
59デフォルトの名無しさん (ワッチョイ cfe8-7LW1)
2017/12/22(金) 11:05:05.39ID:oEPXElot0 結局個人的感情か
毎回レスの最後に ※個人の感想です って付けとけよ
毎回レスの最後に ※個人の感想です って付けとけよ
60デフォルトの名無しさん (アウアウウー Sa67-fOQO)
2017/12/22(金) 11:10:42.54ID:cOtumJc5a61デフォルトの名無しさん (ブーイモ MM27-vkjg)
2017/12/22(金) 11:11:28.05ID:lyRs/gAjM オブジェクト指向は過去の遺物
62デフォルトの名無しさん (ワッチョイ 6f9e-rt3g)
2017/12/22(金) 12:24:49.48ID:4JyKqZfo0 >>61
じゃあ今流行りは何?
じゃあ今流行りは何?
63デフォルトの名無しさん (ガックシ 067f-Iw9I)
2017/12/22(金) 12:29:43.88ID:E5w5T/306 大きなスケール→ガチガチのオブジェクト指向
小さなスケール→手続き型、関数型
小さなスケール→手続き型、関数型
64デフォルトの名無しさん (ワントンキン MM9f-OPDc)
2017/12/22(金) 12:35:16.71ID:3WJNmOAXM 名前、住所、電話番号、みたいなデータがあったとして、
Aさんの住所を参照するのに、["A"]的なアクセスするやつ、なかったでしたっけ?
Aさんの住所を参照するのに、["A"]的なアクセスするやつ、なかったでしたっけ?
65デフォルトの名無しさん (ワッチョイ ffb3-6aYH)
2017/12/22(金) 12:41:08.55ID:sp7ymsVp0 >>64
Dictionaryでいいんじゃね?
Dictionaryでいいんじゃね?
66デフォルトの名無しさん (ガックシ 067f-Iw9I)
2017/12/22(金) 12:47:31.71ID:E5w5T/30667デフォルトの名無しさん (アウアウウー Sa67-bqMz)
2017/12/22(金) 13:06:22.96ID:4dlvq16La >>64
そういう仕組みはインデクサという
そういう仕組みはインデクサという
68デフォルトの名無しさん (ワッチョイ f3f7-fDUi)
2017/12/22(金) 19:32:54.21ID:w6Zu6k6M0 ボタンを押すと処理を緊急停止するプログラムを作りたいのですがどのような方法がありますでしょうか?
69デフォルトの名無しさん (ワッチョイ cf9a-RBuR)
2017/12/22(金) 19:39:03.10ID:Ta4DCaCP070デフォルトの名無しさん (ワッチョイ f3f7-fDUi)
2017/12/22(金) 19:46:47.55ID:w6Zu6k6M0 今はbackgroundWorkerで処理を実行しているのですが
CancelAsync()で停止させても
if (backgroundWorker1.CancellationPending)
{
e.Cancel = true;
return;
}
というコードに到達するまで停止しないので停止までに時間があるのを改善したいです
このコードをたくさん差し込むしかないのでしょうか?
CancelAsync()で停止させても
if (backgroundWorker1.CancellationPending)
{
e.Cancel = true;
return;
}
というコードに到達するまで停止しないので停止までに時間があるのを改善したいです
このコードをたくさん差し込むしかないのでしょうか?
71デフォルトの名無しさん (ワッチョイ cf9a-RBuR)
2017/12/22(金) 19:51:25.63ID:Ta4DCaCP0 >>70
親フォームでkillしたらbackgroundWorkerも止まるんじゃないの?
親フォームでkillしたらbackgroundWorkerも止まるんじゃないの?
72デフォルトの名無しさん (ワッチョイ f3f7-fDUi)
2017/12/22(金) 19:53:12.14ID:w6Zu6k6M0 どういうことでしょう
あらゆる処理をForm1に書いていまして
killの仕方がわからないです
あらゆる処理をForm1に書いていまして
killの仕方がわからないです
73デフォルトの名無しさん (ワッチョイ cf9a-RBuR)
2017/12/22(金) 19:59:46.81ID:Ta4DCaCP0 backgroundWorker以外の処理は生かしておきたいって話なら分からないな
>>70
というかキャンセル用のフラグ作って止めなきゃならないところに停止処理差し込むのがそんな大変だとも思えないけど
楽したいってのはわかるけど、それは他の人に聞いて
>>70
というかキャンセル用のフラグ作って止めなきゃならないところに停止処理差し込むのがそんな大変だとも思えないけど
楽したいってのはわかるけど、それは他の人に聞いて
74デフォルトの名無しさん (ワッチョイ c3b3-QXzE)
2017/12/22(金) 20:00:08.26ID:W8xzYPPc0 >このコードをたくさん差し込むしかないのでしょうか?
>あらゆる処理をForm1に書いていまして
まず、設計の仕方を覚えた方が良い
>あらゆる処理をForm1に書いていまして
まず、設計の仕方を覚えた方が良い
75デフォルトの名無しさん (ワッチョイ ff19-vkjg)
2017/12/22(金) 20:10:01.65ID:HDUqSz1r0 >>68
Application.Exit();
Application.Exit();
76デフォルトの名無しさん (ワッチョイ 03c9-buzn)
2017/12/22(金) 20:31:26.17ID:kA+szNzE0 自作プログラムでSemaphoreFullExceptionが発生したんだけど、これってSemaphore使って無くてもTaskやawait使っていれば発生するようなもんなの?
77デフォルトの名無しさん (ブーイモ MM27-bebx)
2017/12/22(金) 20:34:55.44ID:2CqGXpCvM なぜスタックトレースを見ないのか
78デフォルトの名無しさん (ワッチョイ 03c9-buzn)
2017/12/22(金) 20:39:08.36ID:kA+szNzE079デフォルトの名無しさん (アウアウウー Sa67-bqMz)
2017/12/22(金) 20:40:07.26ID:4dlvq16La まあ普通に使い方間違えてバグってんでしょ
80デフォルトの名無しさん (アウアウエー Sadf-HQem)
2017/12/22(金) 20:47:43.11ID:G9MI+OvKa81デフォルトの名無しさん (ワッチョイ f3f7-fDUi)
2017/12/22(金) 21:17:12.68ID:w6Zu6k6M0 >>80
それ自分です!
それ自分です!
82デフォルトの名無しさん (ワッチョイ cf81-+TNz)
2017/12/22(金) 21:18:00.45ID:UrkxRoCQ0 二度も同じことを聞くんじゃない
83デフォルトの名無しさん (アウアウエー Sadf-HQem)
2017/12/22(金) 21:27:30.25ID:G9MI+OvKa >>81
マジすかw
マジすかw
84デフォルトの名無しさん (ワッチョイ c3b3-QXzE)
2017/12/22(金) 21:30:54.07ID:W8xzYPPc0 わろす
85デフォルトの名無しさん (ワッチョイ ffd2-VulL)
2017/12/22(金) 21:46:10.24ID:Kw0QQsKg0 潔くてすき
86デフォルトの名無しさん (ワッチョイ 6f9e-rt3g)
2017/12/22(金) 22:28:43.29ID:4JyKqZfo0 backgroundworkerとtaskの違いは何よ?
87デフォルトの名無しさん (ワッチョイ 6f76-5z/u)
2017/12/22(金) 22:41:34.49ID:Iyc/J/sJ0 BackgroundWorkerはレガシー
88デフォルトの名無しさん (ワッチョイ 138d-6js8)
2017/12/22(金) 23:26:00.99ID:vOV0CWVO0 >>81
ここで2回も聞くぐらいなら
やりたいことを英語にしてGoogleで検索した方がいいよ
ここにいる人が知らないか教えないだけで
やり方はちゃんとある
ポーリングとか今どきダサすぎるからやめとけ
ここで2回も聞くぐらいなら
やりたいことを英語にしてGoogleで検索した方がいいよ
ここにいる人が知らないか教えないだけで
やり方はちゃんとある
ポーリングとか今どきダサすぎるからやめとけ
89デフォルトの名無しさん (アウアウエー Sadf-HQem)
2017/12/22(金) 23:41:50.51ID:G9MI+OvKa いやいやないからアホかw
あるなら言ってみ。まあ無理せんでよろしい。
生スレッドは強制終了できるが普通は推奨されない。
あるなら言ってみ。まあ無理せんでよろしい。
生スレッドは強制終了できるが普通は推奨されない。
90デフォルトの名無しさん (アウアウエー Sadf-HQem)
2017/12/22(金) 23:43:22.66ID:G9MI+OvKa そもそも外から強制的に止めるって発想に疑問を持たない時点でセンスがない
91デフォルトの名無しさん (ワッチョイ 6f7f-HrVW)
2017/12/22(金) 23:43:31.65ID:teKS3rfy092デフォルトの名無しさん (ワッチョイ 6f7f-HrVW)
2017/12/22(金) 23:48:36.08ID:teKS3rfy0 CancellationToken.ThrowIfCancellationRequested()使うけど、これもポーリングだしな。
93デフォルトの名無しさん (ワッチョイ 9306-buzn)
2017/12/22(金) 23:54:28.61ID:oR3DRk2W094デフォルトの名無しさん (ワッチョイ 2323-bebx)
2017/12/23(土) 01:24:21.53ID:ti8BrBts0 スリープで時間かかってたり繰り返しスリープ入れてるなら
Interruptを使って無理矢理中断させることもできる
Interruptを使って無理矢理中断させることもできる
95デフォルトの名無しさん (ワッチョイ cf80-fDvV)
2017/12/23(土) 08:12:59.96ID:FPRjmoIB0 >>70
Async が付いている関数は、非同期処理だから、コンテキストが異なる。
だから、処理が実行される順番が確定しない
Sync なら同期処理だから、順番が1つに決まる。
つまり、ソースコードの上から下へ、順に実行される
コンテキストが異なるもの同士が通信するには、プロセス間通信(IPC)を使う。
基本的には、相手のキューに、投入することしかできない
1. 依頼する。A プロセス → OS → B プロセス
2. B が届いたメッセージを処理する
3. 返事する。B プロセス → OS → A プロセス
これを同期処理にすると、1〜3 の処理中、
アプリが止まる(ストール)から、GUI では嫌われる。
50ms 以上掛かる処理は、非同期処理にすべき
逆に、CUI では同期処理にして、コンソールが止まる
Async が付いている関数は、非同期処理だから、コンテキストが異なる。
だから、処理が実行される順番が確定しない
Sync なら同期処理だから、順番が1つに決まる。
つまり、ソースコードの上から下へ、順に実行される
コンテキストが異なるもの同士が通信するには、プロセス間通信(IPC)を使う。
基本的には、相手のキューに、投入することしかできない
1. 依頼する。A プロセス → OS → B プロセス
2. B が届いたメッセージを処理する
3. 返事する。B プロセス → OS → A プロセス
これを同期処理にすると、1〜3 の処理中、
アプリが止まる(ストール)から、GUI では嫌われる。
50ms 以上掛かる処理は、非同期処理にすべき
逆に、CUI では同期処理にして、コンソールが止まる
96デフォルトの名無しさん (ワッチョイ cf81-+TNz)
2017/12/23(土) 08:22:18.86ID:7ZChdQbJ0 このどことなくズレたレスをつける句読点過剰くんってのは、やはり糖質なのだろうか?
97デフォルトの名無しさん (ワッチョイ 2323-bebx)
2017/12/23(土) 08:23:33.88ID:ti8BrBts0 句読点箇条君はすぐわかるな
そして必ず間違ってる
スレッドが違うだけならIPCなんか使う必要ない
普通は単にメモリを共有する
FormsのBeginInvokeなどで使われているSynchronizationContextのキューも普通にメモリを共有してるだけだ
そして必ず間違ってる
スレッドが違うだけならIPCなんか使う必要ない
普通は単にメモリを共有する
FormsのBeginInvokeなどで使われているSynchronizationContextのキューも普通にメモリを共有してるだけだ
9895 (ワッチョイ cf80-fDvV)
2017/12/23(土) 08:24:22.31ID:FPRjmoIB0 つまり、1〜3 は、OS が行っている事だから、何もできる事が無い。
OS レスのマイコンとかなら、自分でプログラミングするけど
何かをしようとしても、OS がCPU のタイムスライス、
プロセスの優先度・実行順番を決めているから、何もできない
それがOS。
OSレスなら、それらを自分でプログラミングしないといけないから、無理
OS レスのマイコンとかなら、自分でプログラミングするけど
何かをしようとしても、OS がCPU のタイムスライス、
プロセスの優先度・実行順番を決めているから、何もできない
それがOS。
OSレスなら、それらを自分でプログラミングしないといけないから、無理
99デフォルトの名無しさん (ワッチョイ 2323-bebx)
2017/12/23(土) 08:45:11.75ID:ti8BrBts0 このアスペは>>97も理解してないんだと思うけど、初心者スレだから改めて否定しておく
スレッドが違うだけなら、>>95の123は正しくはこう
1. スレッドAがジョブの情報Jをメモリ上のキューQに登録する
2. スレッドBはQからJを取り出し、Jの内容に従って処理を実行する
3. Bは処理結果RをキューQ'に登録する
4. AはQ'からRを取り出し、後続処理を実行する
AとBの間で普通にQやQ'を直接共有してるだけで、OSなんか全く関係ない
そもそもマルチスレッドに限った話でもなく、例えば、ゲーム内で2つのキャラクターの間でやり取りしたい、
でも直接メソッドを呼ぶと長くなるとか、間にウェイトを入れたいとかで一旦処理をゲームループに戻したい、なんて時にも使える
スレッドが違うだけなら、>>95の123は正しくはこう
1. スレッドAがジョブの情報Jをメモリ上のキューQに登録する
2. スレッドBはQからJを取り出し、Jの内容に従って処理を実行する
3. Bは処理結果RをキューQ'に登録する
4. AはQ'からRを取り出し、後続処理を実行する
AとBの間で普通にQやQ'を直接共有してるだけで、OSなんか全く関係ない
そもそもマルチスレッドに限った話でもなく、例えば、ゲーム内で2つのキャラクターの間でやり取りしたい、
でも直接メソッドを呼ぶと長くなるとか、間にウェイトを入れたいとかで一旦処理をゲームループに戻したい、なんて時にも使える
100デフォルトの名無しさん (ワッチョイ 6f9f-M1U4)
2017/12/23(土) 10:27:32.58ID:AW7swrGi0 オレオレキューなんぞつかわずにTaskを使え
バックグラウンドといえどインプロセスで長大な処理を発生させるな
そういうのはジョブ管理サービスを使えHangfireとかな
バックグラウンドといえどインプロセスで長大な処理を発生させるな
そういうのはジョブ管理サービスを使えHangfireとかな
101デフォルトの名無しさん (ワッチョイ cf81-+TNz)
2017/12/23(土) 11:10:58.80ID:7ZChdQbJ0 今回はTaskかどうかは問題ではなく
「BackgroundWorkerの処理を中断する方法で、ポーリングより面倒くさくない方法があったら教えて」
なので
Thread.Abortでも使え
「BackgroundWorkerの処理を中断する方法で、ポーリングより面倒くさくない方法があったら教えて」
なので
Thread.Abortでも使え
102デフォルトの名無しさん (ワッチョイ cf81-+TNz)
2017/12/23(土) 11:12:40.52ID:7ZChdQbJ0 Task大好きッ子もなかなかスレの流れ読んでねえよな
103デフォルトの名無しさん (ワッチョイ 6325-Iw9I)
2017/12/23(土) 11:29:15.39ID:m8DTIJvo0 asyncつけてるとエラー発生したらデバッグの実行位置の矢印の動きがおかしくなる
104デフォルトの名無しさん (オイコラミネオ MMff-HtKy)
2017/12/23(土) 11:42:39.57ID:A76YiAtwM RunWorkerCompletedでイベントオブジェクトのフラグをいじり、それを待機とかだめ?
105デフォルトの名無しさん (ワッチョイ 8f33-9Igo)
2017/12/23(土) 12:51:18.15ID:kNBZIa630 Task関連は7標準のランタイムだと使えないからいまだにBackgroundWorker使ってる
まあ他ソフトの事情で.NET 4以降一切入れないってことはないんだけどさ
まあ他ソフトの事情で.NET 4以降一切入れないってことはないんだけどさ
106デフォルトの名無しさん (ワッチョイ 8f33-9Igo)
2017/12/23(土) 13:21:31.65ID:kNBZIa630 自分のBackgroundWorker使ってるソース見てみると、
処理単位でループして1処理終った後と、長い処理の途中でwk.CancellationPending == trueで抜けるか判定してる
イベント待ちはタイムアウト設定して一旦抜ける
という感じだった
Task使っても同じだろう
処理単位でループして1処理終った後と、長い処理の途中でwk.CancellationPending == trueで抜けるか判定してる
イベント待ちはタイムアウト設定して一旦抜ける
という感じだった
Task使っても同じだろう
107デフォルトの名無しさん (ワンミングク MM9f-Px6h)
2017/12/23(土) 13:24:28.81ID:eJOJ1LQ5M @Abortはしたくない
Aメインループのフラグチェックでは頻度が足りない
Bでもフラグチェック処理を書き足すのは嫌だ
要件はこれでいいか?
真面目に考えるとメタプログラミングの領域だな
チェック頻度とパフォーマンスのトレードオフも考えなきゃならん
初心者スレ民の実力では難しいんじゃないか?
Aメインループのフラグチェックでは頻度が足りない
Bでもフラグチェック処理を書き足すのは嫌だ
要件はこれでいいか?
真面目に考えるとメタプログラミングの領域だな
チェック頻度とパフォーマンスのトレードオフも考えなきゃならん
初心者スレ民の実力では難しいんじゃないか?
108デフォルトの名無しさん (ワッチョイ 03c9-buzn)
2017/12/23(土) 13:34:41.82ID:ktMndlca0 >>107
この頻度が足りないって、メインループの記述が冗長とか別の理由ありそうな気がするわ
この頻度が足りないって、メインループの記述が冗長とか別の理由ありそうな気がするわ
109デフォルトの名無しさん (ワンミングク MM9f-Px6h)
2017/12/23(土) 13:41:27.68ID:eJOJ1LQ5M クッソ長いループ書いてんだろうな
マルチスレッドより先に基本的なコード整理術を覚えたほうがいい
マルチスレッドより先に基本的なコード整理術を覚えたほうがいい
110デフォルトの名無しさん (ワッチョイ f3f7-fDUi)
2017/12/23(土) 13:46:44.49ID:suzKftpB0 たくさんレスありがとうございます。
わからない言葉がたくさんあるので調べてまた来ます。
わからない言葉がたくさんあるので調べてまた来ます。
111デフォルトの名無しさん (ワッチョイ f3f7-fDUi)
2017/12/23(土) 14:02:46.78ID:suzKftpB0 キーボードをa,b,c,dと順番に5秒置きに押していくメソッドをBackgroundWorker内で無限ループさせていて
キャンセルボタンを押したときすぐに止まって欲しいのですが必ずdまで押されてから止まるので困っているという感じです
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
play_abcd();
if (backgroundWorker1.CancellationPending)
{
// イベントをキャンセルする
e.Cancel = true;
return;
}
}
}
キャンセルボタンを押したときすぐに止まって欲しいのですが必ずdまで押されてから止まるので困っているという感じです
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
play_abcd();
if (backgroundWorker1.CancellationPending)
{
// イベントをキャンセルする
e.Cancel = true;
return;
}
}
}
112デフォルトの名無しさん (ワッチョイ 6316-+TNz)
2017/12/23(土) 14:10:55.29ID:saCRURuP0 そりゃそうだろって反応しか返ってこないと思う
113デフォルトの名無しさん (ワッチョイ f3f7-fDUi)
2017/12/23(土) 14:19:46.07ID:suzKftpB0 キーボードをa,b,c,dと順番に5秒置きに押していってすぐ途中で止められるプログラムを作るには
どういう方法があるんでしょうか?BackgroundWorkerにはこだわりません。
play_abcd()メソッドには押したボタンをtextBoxに表示する機能もあってBackgroundWorkerを使うと
プログラム実行中でもきちんと表示されるのでBackgroundWorkerを使っています
どういう方法があるんでしょうか?BackgroundWorkerにはこだわりません。
play_abcd()メソッドには押したボタンをtextBoxに表示する機能もあってBackgroundWorkerを使うと
プログラム実行中でもきちんと表示されるのでBackgroundWorkerを使っています
114デフォルトの名無しさん (ワッチョイ 6f9f-M1U4)
2017/12/23(土) 14:42:50.03ID:AW7swrGi0 private IEnumerable<Action> GetJobs(int sleepMilliseconds) {
/**/var buttons = new [] { btnA, btnB, btnC, btnD };
/**/while (true) {
/**//**/foreach (var button in buttons) {
/**//**//**/yield return () => button.Click();
/**//**//**/yield return () => Thread.Sleep(sleepMilliseconds);
/**//**/}
/**/}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
/**/while (true) {
/**//**/foreach (var job in GetJobs()) {
/**//**//**/job();
/**//**//**/if (backgroundWorker1.CancellationPending) {
/**//**//**//**/e.Cancel = true;
/**//**//**//**/return;
/**//**//**/}
/**//**/}
/**/}
}
/**/var buttons = new [] { btnA, btnB, btnC, btnD };
/**/while (true) {
/**//**/foreach (var button in buttons) {
/**//**//**/yield return () => button.Click();
/**//**//**/yield return () => Thread.Sleep(sleepMilliseconds);
/**//**/}
/**/}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
/**/while (true) {
/**//**/foreach (var job in GetJobs()) {
/**//**//**/job();
/**//**//**/if (backgroundWorker1.CancellationPending) {
/**//**//**//**/e.Cancel = true;
/**//**//**//**/return;
/**//**//**/}
/**//**/}
/**/}
}
115デフォルトの名無しさん (ワッチョイ c3bb-+TNz)
2017/12/23(土) 14:43:52.99ID:7NR5j+Xf0 play_aとplay_bとplay_cとplay_dを分ける
デリゲート配列にしてforeachで回せばチェックは一カ所で済む
デリゲート配列にしてforeachで回せばチェックは一カ所で済む
116デフォルトの名無しさん (ワッチョイ f381-7LW1)
2017/12/23(土) 14:47:49.51ID:97OmZxF20 メソッドの名前がメンタルに悪い
117デフォルトの名無しさん (ワンミングク MM9f-Px6h)
2017/12/23(土) 14:57:49.84ID:eJOJ1LQ5M 5chはいつになったらGFM対応するんだ
118デフォルトの名無しさん (ワッチョイ 9306-buzn)
2017/12/23(土) 15:46:06.35ID:KAucFFwx0 BackgroundWorkerじゃなくてタイマー使うべきだよ
119デフォルトの名無しさん (アウアウエー Sadf-HQem)
2017/12/23(土) 16:17:28.04ID:Nxx0V5wTa >>111
>>113
>play_abcd()メソッドには押したボタンをtextBoxに表示する機能もあって
ってことはたぶんplay_abcdの中でbackgroundWorker1.ReportProgressを呼んでいる、
つまりbackgroundWorker1を参照できる場所にplay_abcdはあるんだから、
素直にCancellationPendingをポーリングするだけじゃないの?
本当はよくないと思うけどねこういうの
本当は前も書いたみたいにplay_abcdのシグネチャを
void play_abcd(Func<bool> canceled){...}
とかにして、呼び出すときに、
play_abcd(() => backgroundWorker1.CancellationPending);
がいいと思う
っていうか、そもそも
>キーボードをa,b,c,dと順番に5秒置きに押していくメソッド
をビジーループで実弁する必要本当にある?w
それ、タイマーで十分実現できると思うんだけど...
>>113
>play_abcd()メソッドには押したボタンをtextBoxに表示する機能もあって
ってことはたぶんplay_abcdの中でbackgroundWorker1.ReportProgressを呼んでいる、
つまりbackgroundWorker1を参照できる場所にplay_abcdはあるんだから、
素直にCancellationPendingをポーリングするだけじゃないの?
本当はよくないと思うけどねこういうの
本当は前も書いたみたいにplay_abcdのシグネチャを
void play_abcd(Func<bool> canceled){...}
とかにして、呼び出すときに、
play_abcd(() => backgroundWorker1.CancellationPending);
がいいと思う
っていうか、そもそも
>キーボードをa,b,c,dと順番に5秒置きに押していくメソッド
をビジーループで実弁する必要本当にある?w
それ、タイマーで十分実現できると思うんだけど...
120デフォルトの名無しさん (ワンミングク MM9f-Px6h)
2017/12/23(土) 16:39:39.92ID:eJOJ1LQ5M タイマーとかめんどくさいだけだろ
121デフォルトの名無しさん (ワッチョイ 3317-7LW1)
2017/12/23(土) 16:58:02.75ID:oBD8VcBx0 BackgroundWorkerのほうが実装が綺麗になるよね
122デフォルトの名無しさん (ワッチョイ a375-Iw9I)
2017/12/23(土) 17:54:59.64ID:433UoltE0123デフォルトの名無しさん (ワッチョイ 6f9e-rt3g)
2017/12/23(土) 18:17:28.09ID:MO+dM8J20 >>121
どう言う理由で?
どう言う理由で?
124デフォルトの名無しさん (ワッチョイ ff06-buzn)
2017/12/23(土) 18:52:05.60ID:vwLvtl/C0 タイマーなら、キャンセルでタイマー止めればそれで終わりでしょ
実装が見苦しいようには見えんね
実装が見苦しいようには見えんね
125デフォルトの名無しさん (ワッチョイ 6f9f-M1U4)
2017/12/23(土) 18:57:13.19ID:AW7swrGi0 ためしに書いてみてよ
126デフォルトの名無しさん (ワッチョイ ff06-buzn)
2017/12/23(土) 19:41:20.88ID:vwLvtl/C0127デフォルトの名無しさん (ワッチョイ 8f9f-9TLc)
2017/12/23(土) 19:47:21.47ID:PvZdk9430 >>113
そもそも、なんで提示したコードがdまで実行しないとキャンセルされないか理解できてる?
理解出来てればBackgroundWorkerを別の手法に変えても意味がないことは分かると思うんだけど
そもそも、なんで提示したコードがdまで実行しないとキャンセルされないか理解できてる?
理解出来てればBackgroundWorkerを別の手法に変えても意味がないことは分かると思うんだけど
128デフォルトの名無しさん (ワッチョイ 6f9d-FmKA)
2017/12/23(土) 20:47:59.87ID:afY4COyy0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【東京】乗用車が歩行者をはね11人ケガ、うち2人重体 現場に残されたセダンの運転手が衝突後に逃走…ひき逃げ事件として捜査 足立 [ぐれ★]
- 【速報】東京・足立区のひき逃げ事故 警視庁が運転手とみられる人物確保 [Ailuropoda melanoleuca★]
- スペイン、移民受け入れで成長 1人当たりGDP日本超え ★2 [蚤の市★]
- 尖閣周辺に中国船、10日連続 いずれも機関砲搭載 ★2 [蚤の市★]
- 2025/11/24(月) 14:14:13.84 ID:gjXEDwyM0<> 】「低空飛行」NHK紅白を見舞ったK-POP多用、YOASOBI演出、旧ジャニーズ不在の三重苦 [尺アジ★] (1002) [芸スポ速報+] <br> 2:【日刊ゲンダイ】TOBE滝沢秀明社長に求められる説明責任 旧ジャニーズの領地をそっくり“頂き”は済まされない [尺アジ★] (31) [ニュース速報+] <br> 3:【共産党】小池書記局長、ジャニーズ性加害問題で政府批判「どうも人ごと的。きちんと関与して」 [尺アジ★] (555) [ニュース速報+] <br> 4:【ジャニーズ事務所会見】望月衣塑子記者の「テレ朝はきょうも中継していません!」に総ツッコミ 井ノ原快彦も「望月さん、しています」 [尺アジ★] (1002) [芸スポ速報+] <br> 5:【テレビ】浜田雅功「尺できた」で収録終了 ジャニーズのタレントを放置 [爆笑ゴリラ★] (135) [芸スポ速報+] <br> 6:民放「長時間の音楽特番やるよー!」ワイ「どれどれ」民放「ジャニーズ!秋元アイドル!K-POP!尺稼ぎVTR!」←これ (8) [ニュー速VIP] <br> <br> 空席…滲むド軍ファンの思い [尺アジ★] (779) [芸スポ速報+] <br> 2:大谷翔平シーズン当初の長尺バットやめてたんだな (3) [なんでも実況G] <br> 3:「大谷ファンの高齢者にとっては絶望的」WBCの“Netflix独占配信” ★3 [尺アジ★] (838) [芸スポ速報+] <br> 4:「大谷ファンの高齢者にとっては絶望的」WBCの“Netflix独占配信” ★2 [尺アジ★] (1002) [芸スポ速報+] <br> 5:「大谷ファンの高齢者にとっては絶望的 <>
- 「『中国との対話望む』日本側の姿勢は偽善」 中国共産党系国際紙が批判 高市総理の答弁撤回改めて求める [蚤の市★]
- 【高市速報】足立区でテロ [931948549]
- 足立区の事故現場の写真を撮っただけのオッサン、炎上wwwwwwwwwwwwwwwwwwwwwwwwwwwwww🤳 [329329848]
- 山里亮太「メディアは高市総理を批判しないように」 [931948549]
- ジャップ、育ちの良いお嬢様/お坊っちゃまを笑う陰湿な国民性が話題に [242521385]
- 🏡👧👩💥🚗👴💨プリウスミサイル発射ぁぁ!
- 【悲報】高市政権外務省「旧敵国条項、既に死文化しただろ!!!!」Xで発信 [115996789]
