C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net

レス数が1000を超えています。これ以上書き込みはできません。
2017/04/22(土) 15:36:53.26ID:S+KK7a41
■Visual Studio 2015 Community & Express (無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part92 (実質93)
http://echo.2ch.net/test/read.cgi/tech/1485589613/

■次スレは>>970が建てる事
建てられない場合は他を指定する事。
2017/10/15(日) 14:09:37.18ID:Bo2AAy/J
TaskScheduler渡しとけばいいんでない
2017/10/15(日) 14:21:36.95ID:uH5IYLUj
>>920
意味不明だから言いたいこと整理して
1ステートメントは短く簡潔に
複数行に分けてもいい
「〜である。」「〜だと思う。」「〜したい。」「〜してくれ。」をハッキリして
2017/10/15(日) 14:41:20.38ID:yD0afN8z
静的イベント定義してタスクはそれを発生させる
受け取り側各位はイベントを受けて適当にハンドルする
でいいんじゃね
2017/10/15(日) 14:43:54.89ID:khkF9f68
>>922
お前以外はわかってる
2017/10/15(日) 14:46:56.01ID:XWjA+gHr
□メインフォーム
データリストを保持してる
一定間隔でデータリストをデータベースから取ってきて更新する

□バックグラウンドタスク
メインフォームのコンストラクタで起動する
メインフォームを閉じるまでwhileで動き続ける
メインフォームのデータリストに異常値を見つけたら注意喚起フォームを開く

□注意喚起フォーム
データが異常値だから直せ〜のメッセージが表示してある
オーナーはメインフォーム

バックグラウンドタスクのメソッド上で注意喚起フォームを普通に開こうとしたらクロススレッド〜で開けない
タスク上にインヴォークを記述するのはタスクがスタティックだから使えない
フォームを開く処理をメインフォームに書いてタスクにデリゲート処理を記述するのもタスクがスタティックだから静的なフィールド〜でできない
メインフォームはスタティックじゃないけど作りの問題でタスク側でnewするわけにはいかない

どうやってタスクからイベントを投げてメインフォームでハンドルすればいいか教えてください

>>922
これで理解できる?
2017/10/15(日) 14:48:02.73ID:uH5IYLUj
>>924
それはわかってるつもりになってるだけだよ
2017/10/15(日) 14:52:56.88ID:uH5IYLUj
>>925
後半が意味不明
タスクがスタティックってどういうこと
タスクはオブジェクトだろ
2017/10/15(日) 15:10:29.08ID:XWjA+gHr
static修飾子知らないってマジモンの素人やん
そら説明しても理解できませんわ

>>923
ありがとう
ちょっと調べてみる!
2017/10/15(日) 15:42:51.61ID:6FiFCoKL
バックグラウンドタスクをシングルトンパターンにして、
メインフォームから起動すればいいんちゃうか
2017/10/15(日) 15:48:03.42ID:hZRxEBGG
>>925

>バックグラウンドタスクのメソッド上で注意喚起フォームを普通に開こうとしたらクロススレッド〜で開けない
UIスレッドからタスクを実行してるならawaitでUI処理できるよね?
タスク一回終わらしてUI処理してからまたタスク起動する形にすれば簡単だと思う
それかイベントにするか

>メインフォームのコンストラクタで起動する
これって普通?コンストラクタで起動するのはちょっと気持ち悪い
2017/10/15(日) 15:54:54.78ID:uH5IYLUj
Formが抱えてるデータを走査してるんだから
Formインスタンスは持ってるんだろ
ならInvokeするだけじゃねえかアホかこいつ
2017/10/15(日) 15:59:42.50ID:Tx63GDtf
バックグラウンドタスクっているの?
2017/10/15(日) 16:05:38.00ID:uH5IYLUj
インヴォーク(FormインスタンスのInvokeメソッドのことでいいんだよな?)を記述できないスタティックなタスク
という記述から一般的な意味でのstaticメソッドではないスタティックなタスクと名付けられたもの固有の事情があることは明らか
なぜなら非UIスレッドで実行中のstaticメソッドからFormインスタンスのInvokeメソッドを呼び出せないということはないからだ
そもそもInvokeは非UIスレッドからUIスレッドに処理を移譲するための機構だ
まずはそこ(スタティックなタスクと呼んでいる何かについて)を説明しろ
2017/10/15(日) 16:11:46.40ID:64liGYG7
綺麗なコードって何なんだろうと思う
俺のかいたコードじゃないことは確か

クラス設計もきちんと学んだことがなく
いつの間にか親子関係がおかしくなってそれぞれをコンポジションしたり
よくよく見たらstaticでいいよなって思うものが生えてくる
状態なのか具象なのかが混とんとしてくる

参考にしようと小さなソフトのgithubみたら100行に満たない小さなクラスが100も200もあったりする
どうやってこれの役割覚えて管理してるのかと感心する
2017/10/15(日) 16:31:12.04ID:Tx63GDtf
>>934
製作者がクラス図書いてなきゃ
そこで終了な案件

ソースからクラス図を生成するツールがうまく動いてくれればラッキー
動かなかったら地道に書いて見るしかない
2017/10/15(日) 16:31:43.29ID:XWjA+gHr
>>930
コンストラクタで起動するのが気持ちわるいのは超同意
でもコンストラクタで立ち上げて常駐する形じゃないとダメー!!!らしいのでしゃーなしでやってる
タスクの処理をUIスレッドでawaitして返り値で処理するのを繰り返す形が正解なのは理解してるんだけど

>>932
ぶっちゃけボタンかタイマーで起動してawait繰り返せば済むしコードも読みやすいし実装も楽だし拡張性も上がるんだけど
「おじいちゃんはバックグラウンドという言葉が大好き」なのでしょうがない
2017/10/15(日) 16:34:15.07ID:SUmdrC/e
>>934
小さいクラスはたくさんあっても困らない
見れば何やってるかすぐにわかるから
それに小さいクラスは1つの役割に集中していることが多い(それが良い設計)
なのでクラス名を見れば何をやってるクラスなのか大体わかる

何千行もある巨大なクラスは見てもよくわからない
大抵の場合、様々な役割が1つのクラスに詰め込まれているので、名前も曖昧になる
こういうクラスは1つでもあるとプロジェクトが大混乱する
2017/10/15(日) 16:39:42.12ID:Tx63GDtf
>>937
俺はわからんかった
細切れソースは俺は読めない
資料書いてくれ
2017/10/15(日) 16:41:28.87ID:SUmdrC/e
>>936
そもそも繰り返すのは正解じゃない
入力系イベントで同期的に検証すればいいだけの話
今回の場合は入力ではなくデータ取得なので取得したあとにデータを検証ればいい
検証なんてほとんど時間がかからないんだから非同期にする必要はない
データに変化がないのに何度も繰り返しデータが正しいか検証したってしょうがない
2017/10/15(日) 16:45:10.71ID:SUmdrC/e
>>938
そうか
長いクラスを読むのはもっと大変だろうね
2017/10/15(日) 16:46:24.51ID:64liGYG7
俺が見たのは何とかジェネレーターというの沢山あるものだった
AジェネレーターがBジェネレーターをつくりそのクラスからCジェネレーターが出来て…と
とてもとても理解不能だった
なぜなんとかジェネレーターが必要なのかどうかがわからない
2017/10/15(日) 16:48:21.34ID:eZM6bYju
コンパクトなクラスが読めないのは能力云々より
設計か命名の問題だと思う
2017/10/15(日) 16:49:26.63ID:Tx63GDtf
>>940
そういう問題じゃなくて意味があるまとまりにしてくれないと困る
んでおそらく形成されているであろうツリー構造がソースから把握できない
2017/10/15(日) 16:53:40.20ID:Tx63GDtf
>>941
単ー複の複が増減するんだろうねw
クラス図だと「ー●」確かこんな関係?
2017/10/15(日) 16:58:24.70ID:64liGYG7
コンストラクタ+メソッド1個みたいのもたくさんあった
単機能を実装したらこういうことになるんだろうとは思うけど
クラスが現実世界のものを表してるならこんな感じにはならない
2017/10/15(日) 16:59:23.02ID:HL16aayQ
>>943
クラスは意味のあるまとまりだよ
クラスのグルーピングは名前空間でやってるでしょ
名前空間使ってないなら命名規約でわかるようになってるんじゃないかな
どっちも無いならちょっと不親切だね
ちなみにどのリポジトリ?Githubだったよね?
2017/10/15(日) 17:01:23.72ID:Tx63GDtf
>>945
作るの勝手だけど
そういう奴に限って設計書のクラスの
記述漏れてんだよなぁ

プチクラス作れば作るほど
設計書書くの大変なのに
2017/10/15(日) 17:03:33.64ID:Tx63GDtf
>>946
githubなんてアクセスしたら警告表示が出ちまうよ
2017/10/15(日) 17:03:58.81ID:HL16aayQ
>>941
それはジェネレーターではなくファクトリーでは?
DIフレームワークを使わない硬派なプロジェクトだと大量のファクトリーが作られる
2017/10/15(日) 17:06:39.12ID:Tx63GDtf
>>949
たくさん種類があるんじゃね?
2017/10/15(日) 20:01:37.79ID:pPHSVA6w
無駄にこだわりが多かったりプライド高いやつのは汚いソースになるな
2017/10/15(日) 20:21:58.89ID:7EwQRwAf
>>906
使わない
過去の遺物

ヒープ汚したく無い時のstruct用はあるが例外やね
2017/10/15(日) 20:24:26.52ID:7EwQRwAf
>>912
今ならOptionやらなんやらやね
2017/10/15(日) 20:41:56.58ID:T+wcAuKm
>>952
過去の遺物ってことは無いな
C#7で参照戻り値と参照ローカル変数が追加されたくらいだし
2017/10/15(日) 22:31:21.56ID:9R+c2v2L
C#はコードを使い捨てにする言語だからな。
殴り書きの汚いソースでも動くように最強のIDEがサポートしてくれる。
2017/10/15(日) 22:39:13.51ID:Gr3hJnkQ
それには同意できない
殴り書きでいいならpythonつかえと
2017/10/15(日) 22:44:28.44ID:9R+c2v2L
おまえに命令される筋合いはない。おまえこそCOBOLでも使ってろよ。
2017/10/15(日) 22:47:00.42ID:iejCBPTQ
ちょっとワロタ
2017/10/15(日) 22:52:11.14ID:gXUARaWp
業務系でC#使う上で最強のプロジェクト管理・ソース管理はどれですかね?
2017/10/15(日) 22:57:23.96ID:s9CmER57
個人プレーならzipでソルーション丸ごと固めるのが結局最強
2017/10/15(日) 23:01:23.07ID:9GFvcsU0
>>959
GitHub Enterprise
2017/10/15(日) 23:04:37.66ID:9R+c2v2L
TFSは死んだのか。
2017/10/15(日) 23:17:33.61ID:dd5lceIv
今やMSもGithubだからなあ
2017/10/15(日) 23:17:50.60ID:9GFvcsU0
>>962
VSTS
2017/10/15(日) 23:52:49.16ID:9R+c2v2L
C++保守用に未だVSS使ってるわ。新規で作ることないから移行する気がない。
個人ではC#のコードは使い捨てだから変更履歴なんかいらないよな。バックアップだけで十分。
2017/10/16(月) 00:06:28.84ID:jGcPR8aa
バックアップ目的だけでもgitのほうが楽だわ
何も考えずプッシュするだけ
2017/10/16(月) 00:10:00.94ID:TyZJj4Kq
VCSに対してCVSとかSVNとかのイメージを引きずってるなら、
Gitは食わず嫌いしないで一度試してみるべきだな
本当に手軽に使え、全く負担にならない
2017/10/16(月) 00:35:37.42ID:pMOr9sAk
>>967
gitって非公開で使うにはお金かかるんですか?
2017/10/16(月) 00:38:16.40ID:7ho3Goo/
gitは今はVSにもデフォルトで入ってるんじゃないか?ネットワークないローカル環境でも使える
githubはしらね
2017/10/16(月) 00:47:42.36ID:eZI1RZBb
githubは非公開はお金がかかる

そういうサービス使わないで自分でgit使って自前のgitリポジトリ利用はタダ
好きなように運用したらいい
2017/10/16(月) 00:49:28.23ID:TyZJj4Kq
gitはローカルで使いながら必要に応じてリモートと同期取るもんだけど、
無料でプライベートリポジトリが持てるホスティングサービスとしてはbitbucketが有名
github的な機能が不要で本当にgitリポジトリのホスティングだけでいいならAWS CodeCommitとかも無料で使える
972デフォルトの名無しさん
垢版 |
2017/10/16(月) 01:22:35.89ID:TG+ykm1v
個人でVSTS使おうと思うけど無料なん?
プライベートリポジトリ。
2017/10/16(月) 01:35:49.09ID:pMOr9sAk
gitと、githubって別物だったのかw
2017/10/16(月) 01:38:02.07ID:1MDONeW4
>>972
うん
2017/10/16(月) 02:22:04.00ID:7CHwAcHs
乱立しすぎ。
2017/10/16(月) 02:25:43.57ID:TG+ykm1v
>>974
試してます。ありがとうございます。
2017/10/16(月) 08:21:49.44ID:dwD3mD07
>>975
世の中はGitで完全に統一されてるよ
どんなホスティングサービスだろうがツールだろうが扱うのはGitリポジトリ
Gitでバージョン管理されているディレクトリをどこに置くか、GUIクライアントに何を使うか、の違いに過ぎない
移行も空のリポジトリ作ってプッシュするだけだ
2017/10/16(月) 08:36:34.51ID:7CHwAcHs
まんまとこの糞ボケに騙されたわ。

gitは糞複雑すぎる。
2017/10/16(月) 08:49:18.18ID:dwD3mD07
>>978
だったら全世界がお前を騙してることになるぞ
今時Gitなんか開発者にとってはHTTPと同レベルの常識
Gitできない時点でまともにプログラム書けるのか疑われるレベルだぞ
2017/10/16(月) 10:04:14.42ID:rPeh4Mh4
>>978
プログラマ向いてないよ
2017/10/16(月) 10:04:38.76ID:qSwuY79x
うーん、やっぱりgitは日本語入れると死ぬなぁ
俺だけ?
2017/10/16(月) 10:10:42.73ID:rPeh4Mh4
>>981
日本語で
2017/10/16(月) 10:14:51.68ID:qSwuY79x
>>982
git、日本語のフォルダとかファイルとかあると駄目だわ
2017/10/16(月) 10:16:55.41ID:7CHwAcHs
>>979-982
もはやスレチじゃ。gitスレに帰れ、アホども。
2017/10/16(月) 10:32:00.46ID:rPeh4Mh4
>>984
そうだね、Gitも使えないんじゃc#スレにいてもしょうがないね
2017/10/16(月) 10:57:45.62ID:qSwuY79x
みんな日本語設定なんでうまくいくの?
2017/10/16(月) 10:58:32.74ID:FZpcfz8T
VSに統合されてるし
変わったことしようとしなければ難しくないと思うけどな
988デフォルトの名無しさん
垢版 |
2017/10/16(月) 11:26:00.31ID:Bpg1BMlQ
なんでGit使うの?
MSの無料のなんちゃらファウンデーションの方がよくない?
2017/10/16(月) 11:36:48.49ID:1Xir09k9
>>988
バージョン管理とホスティングを混同してるだろお前
990デフォルトの名無しさん
垢版 |
2017/10/16(月) 11:37:48.11ID:Bpg1BMlQ
>>989
うん、多分わかってないわ
2017/10/16(月) 11:38:48.59ID:ts6qmxVh
>>986
糞古いの使ってないか?たしか1.6ぐらいまでは日本語不具合あったと思う。詳しくはこっちできけ

Git 16©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1502726047/
2017/10/16(月) 11:39:33.27ID:1Xir09k9
>>990
VSTS(TFS)を使う場合でも、バージョン管理は基本的にGitやで
2017/10/16(月) 19:35:11.46ID:3WbDhRse
>>954
それが例外の特殊必要例やね
積極的に使うものではなくてある特定の人向けのもの
2017/10/16(月) 19:50:32.43ID:BHf6I/rR
結局使う場面があるってことやね
2017/10/16(月) 19:51:44.84ID:eZI1RZBb
みんなTryParseって使ってないのかな?
996デフォルトの名無しさん
垢版 |
2017/10/16(月) 20:15:08.82ID:snIoncYK
gitlabは確か無料だぞ
OSSだから自分で鯖立ても出来たはず
2017/10/16(月) 20:20:36.66ID:oJ8YHn8m
>>995
それは普通に使うな
2017/10/16(月) 21:39:17.75ID:uXI4Esj0
Dictionary.TryGetValue も
2017/10/16(月) 22:18:18.74ID:7CHwAcHs
>>991
向こうで何があったか知らないがgitスレはIP表示にしてるからこっちで暴れてるのではないか。

git関連は巣に戻れ。
2017/10/16(月) 23:46:42.68ID:XYyvKIYb
終了。
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 177日 8時間 9分 49秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況