- 1 名前:デフォルトの名無しさん mailto:sage [2019/07/16(火) 15:36:23.74 ID:i1fbuZ/pM.net]
- !extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為) 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980を踏んだ人は新スレを建てて下さい。 >>980が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■関連スレ C#, C♯, C#相談室 Part95 https://mevius.5ch.net/test/read.cgi/tech/1508168482/ ■コードを貼る場合は↓を使いましょう。 ideone.com/ https://dotnetfiddle.net/ ■前スレ ふらっと C#,C♯,C#(初心者用) Part143 https://mevius.5ch.net/test/read.cgi/tech/1558002486/ ■情報源 https://docs.microsoft.com/ja-jp
- 862 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 08:10:26.75 ID:ws0x1Tjj0.net]
- >>846
駄目です
- 863 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 08:17:51.94 ID:nNBu0V63d.net]
- >>847
その返しはこのスレではいかんだろ(笑)
- 864 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 08:41:05.60 ID:bmAzH1750.net]
- トイレ行ってきていいですか?
- 865 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 08:55:42.37 ID:BmNMZ9TsM.net]
- もう居るだろう
- 866 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 09:29:49.98 ID:fD1lXHN30.net]
- では質問しますね
Timerコンポーネントで Timer1.Interval = 5000;とすると、プログラム起動後5秒後に初めてTimer1_Tickが 実行されますよね、これを起動時に1度実行したいのですがどうしたらいのでしょうか Form1_Loadに書けばいいような気がしますが引数がわからない
- 867 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 09:31:40.04 ID:Q4pocwaT0.net]
- 忘れたけどTimerってTimers.TimerもThreading.Timerも大体どんな種類の奴でも最初のディレイタイム指定できなかったっけ?
- 868 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 09:58:04.89 ID:fD1lXHN30.net]
- >>852
レスサンクスです Delayでぐぐってみましたが、プログラムを遅延させるほうのDelayばかりヒットして なかなか見つかりません、Timerのプロパティにそういうなのがあればいいんですが
- 869 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 10:05:34.65 ID:g7w6SBZq0.net]
- >>853
処理を関数化しておいて、コンストラクタから呼んだらいいんじゃね? 別にタイマーから呼ばなくてもいい
- 870 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 10:13:21.52 ID:e45pyL0lM.net]
- >>851
最初100で、中で則5000書き換えじゃあかんかったっけ
- 871 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 10:40:02.13 ID:fD1lXHN30.net]
- >>854
サンクスです Timer1_Tickの中の処理をゴソっと別にうつすんですか、確かにうまくいきそうですね >>855 さんくすです Timer1.Interval = 100;からTimer1.Interval = 5000;に変更ですか これもうまくいきそうですね、厳密な秒数は必要じゃないですし
- 872 名前:デフォルトの名無しさん [2019/09/30(月) 10:47:03.32 ID:ZcJV4ZEKa.net]
- >>851
どんな方法使ってもいいけど後で読んだ時に何をやってるか 分かりやすいのが一番だね public Form1() { InitializeComponent(); Form1.Load += (sender, e) => OnEvery5Seconds(); Timer1.Tick += (sender, e) => OnEvery5Seconds(); } void OnEvery5Seconds() { ..... } こうやった場合、FormのLoadイベントより前にOnEvery5Secondsが呼ばれる可能性が あることは注意する必要がある。(実際にはないと思うけど)
- 873 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 11:16:30.25 ID:fD1lXHN30.net]
- >>857
れすさんくすです なるほど、こんな書き方もできるのですね、うまくつかえばすっきりまとまりそうです
- 874 名前:デフォルトの名無しさん mailto:sage [2019/09/30(月) 23:02:09.82 ID:S0uOX3sP0.net]
- >>852
流れから推測するとたぶんWindows.Forms.Timerクラスだね
- 875 名前:デフォルトの名無しさん [2019/10/02(水) 01:49:10.77 ID:4PgWnh+40.net]
- 非同期メソッドでちょっとだけ同期処理するのにはどうすれはいいのですか?
async Task ABCasync(){ ABCasyncの呼び出し元には、終わるまで待っていてもらいたい処理(); //ここでtaskで呼び出し元に何かを返せたりするのかしら? ABCasyncの呼び出し元には、待っていてもらう必要のない処理(); }
- 876 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 02:14:39.18 ID:mDEdylW50.net]
- 強引に実装することは可能だがメソッド分割すべき
- 877 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 07:28:12.15 ID:YugGu4Uj0.net]
- クラスは知識
メソッドは機能 という認識は事のほか難しいんけ?
- 878 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 08:07:26.42 ID:Vm3TcWW10.net]
- >>862
そういう一般的でもない訳のわからない解釈を出されても、普通の人には理解できないかおかしな理解のまま突き進むことになるだろう
- 879 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 08:15:53.12 ID:gR9x9lAq0.net]
- クラスは学校とかのクラスって認識でいい
- 880 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 11:07:45.90 ID:9X+f8gXkr.net]
- ゲームのクラスの方がわかりやすい気がする
戦士 魔法使い 僧侶 盗賊 それぞれできることが違う
- 881 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 11:18:19.95 ID:VgxhRvTXp.net]
- あはは、まあ、学校のクラスだと対抗戦が出来るくらいに似たり寄ったりだから意味が分からないよな。
- 882 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 11:59:15.15 ID:8UOZigmra.net]
- 逆に、同一のクラスの異なるインスタンスなんてのもできないしね。
- 883 名前:デフォルトの名無しさん [2019/10/02(水) 12:12:09.33 ID:VOEDuxVKM.net]
- >>865
じゃぁ男女別は? どっちのクラスが上位なの? それとも同格で、男戦士 女戦士ってなるの? 半魚人タイプとか4足系の戦士は?
- 884 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 12:26:49.61 ID:9X+f8gXkr.net]
- 出来ることが変わらないなら基本変えなくていいよ
設計次第だけど 質問の内容の男戦士と女戦士で何が違うのかはっきりしない 力などの属性値(プロパティ)だけが違うなら分ける必要はないわな 半漁人でも4足系の戦士でも数値しかかわらないなら同じ コードが共通になるなら基本的に分けなくてもいい
- 885 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 19:59:53.93 ID:dZRRj/1Z0.net]
- 強引に何かに例えるよりコード書いてみた方がいいよ
- 886 名前:デフォルトの名無しさん mailto:sage [2019/10/02(水) 20:20:25.32 ID:IV023jBj0.net]
- C#はじめて最初の日に読み飛ばすところで議論しても不毛だよな
>>870に賛成
- 887 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 00:57:21.26 ID:z1GHd6rla.net]
- 質問です
工場とかインフラの制御ソフトモドキを成果物としてWindowsアプリケーションの形式でC#で作りたいんですが、この2冊終わった後にWindowsアプリケーション開発の本買うなら何が良いですか? また、本が時間の無駄だとしたらどこのサイトを参照すれば良いですか? 上記の件よろしくお願いしますm(_ _)m 1冊目 なるほどなっとくC#入門 2冊目 C#プログラミングのイディオム/定石&パターン
- 888 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 01:02:05.17 ID:t45ZyD0e0.net]
- そりゃ一番はMicrosoftのチュートリアルでしょ
https://docs.microsoft.com/ja-jp/visualstudio/ide/step-1-create-a-windows-forms-application-project?view=vs-2019
- 889 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 01:16:35.63 ID:z1GHd6rla.net]
- >>873
ありがとうございますm(_ _)m
- 890 名前:デフォルトの名無しさん [2019/10/03(木) 01:19:35.07 ID:pRlPv1jza.net]
- >>872
FormならGUIの作り方は必用なことをググって調べながら実際に作ってみるのが一番。 本は1冊以上は読むだけたぶん時間の無駄。 何かを制御するなら、それが大企業の製品で.NET用のライブラリが用意されているのでない限り たぶんアンマネージドの知識が必要になる。 これは多分本はないので自分でググって調べる あと多分非同期処理は必須。 最初.NET1.x時代の生のThreadとか使う記事に軽く目を通して、 その後は今時のTPLや非同期メソッドの記事を読めばいい。 本もあるけどたぶんweb上の記事で十分
- 891 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 01:26:24.07 ID:wBmuAStK0.net]
- 非同期メソッドの実行自体は慣れたけど
win10のアップデート強制再起動時に 非同期処理中のタスクをきちんと終了させる方法がわからん 突然書き込み中のファイルがぶっ壊れそうで怖いわ
- 892 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 01:35:18.06 ID:z1GHd6rla.net]
- >>875
ありがとうございますm(_ _)m
- 893 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 01:39:57.58 ID:dygVDi5Yd.net]
- >>875
工場の制御ってRS-232CとかPLCとかGPIBとかやろ 別にアンマネージド必要ないだろ
- 894 名前:デフォルトの名無しさん [2019/10/03(木) 01:45:45.89 ID:pRlPv1jza.net]
- >>878
そうかもしれないけど拡張ボードの型式でライブラリはアンマネージドdllだけかもしれない。 USB接続でアンマネージドdllの可能性もある 何とも言えない
- 895 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 15:11:12.65 ID:xDvwVpv4p.net]
- マネージドなドライバーが無いなら使わないって選択をだな。
- 896 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 18:33:07.86 ID:65+5RZIm0.net]
- UI操作とawaitを使った非同期メソッドをまとめたasyncメソッドを別スレッドから呼び出すにはどうすればいいですか?
- 897 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 18:36:08.92 ID:XDm3DYNpd.net]
- >>881
??何が聞きたいの?
- 898 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 18:42:35.24 ID:65+5RZIm0.net]
- >>882
すみませんでした。 例えばこういう感じのメソッドを別スレッドから呼び出す方法を教えてください。 async Task DoSome() { label1.Text="処理中..."; await DoLong(); label1.Text="完了"; }
- 899 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 20:27:59.44 ID:AKImZpfb0.net]
- 正直設計を考え直した方がいいけど
メインスレッドで動作してる間に TaskScheduler.FromCurrentSynchronizationContext() でTaskScheduler確保しておいて、その"別スレッド"内で new Task(() => DoSome()).RunSynchronously(taskScheduler) する
- 900 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 20:48:28.97 ID:Cd3mzBuJ0.net]
- こうじゃダメなの?
Invoke((MethodInvoker)(async () =>DoSome()));
- 901 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 22:23:35.99 ID:Y5r0apvPr.net]
- 呪文化しただけにも見える
- 902 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 00:31:32.74 ID:hyuh0V300.net]
- メソッド側を修正する必要があるけど、
こういうことでは? 別スレッドからのUI操作 https://qiita.com/mounntainn/items/8a2b4f1cf47bd02657f3
- 903 名前:デフォルトの名無しさん [2019/10/04(金) 01:26:24.02 ID:oVLixzTMa.net]
- >>883
やっぱりそういうのは非UIスレッドからも呼び出せるようにする、ではなく、 逆に普通にUIスレッド専用のメソッドとして提供して、 もし必要ならXMLコメントとかで「UIスレッド以外からの呼び出し禁止」って 明示するのが筋なような気がするw
- 904 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 09:42:07.42 ID:7JHQ1IR60.net]
- >>884
>>888 filesystemwatcherのハンドラから呼び出すと別スレッドからの呼び出し扱いになってしまいます。
- 905 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 09:50:12.44 ID:K3mQ1Iatp.net]
- まあその用途ならやっぱコントロールのInvokeの中で呼べばいいだけの話しだな
DoLongの中でさらに入り組んでるとデッドロックしそうだけど
- 906 名前:デフォルトの名無しさん [2019/10/04(金) 14:31:48.61 ID:RxmXvWZXa.net]
- こんなの考えてみたが、あんまり便利でもないなw
private bool TryOnUIThread<T>(EventHandler<T> eh, object sender, T e) where T:EventArgs { if (!InvokeRequired) return false; Invoke((Action)(() => eh(sender, e))); return true; } private void FileSystemWatcher_Changed(object sender, FileSystemEventArgs e) { if (TryOnUIThread(FileSystemWatcher_Changed, sender, e)) return; var t = DoSome(); }
- 907 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 15:21:51.76 ID:5G6hsRzp0.net]
- FileSystemWatcherはSynchronizingObject持ってんじゃん
設定しとけば勝手にBeginInvokeでイベントハンドラ呼んでくれるよ
- 908 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 10:15:38.99 ID:hjSAU91p0.net]
- 質問なんですが
設定ってどこにどうやって保存してますか? .configが今ならベストなんでしょうが、保存先が C:\Documents and Settings\UserName\Local Settings\Application Data\ になり、.iniのように、アプリをコピーで2つの設定が使えるようになりません .configはファイルの場所が遠くて変更しにくい、iniは古くてC#で扱いにくい どうしてますか?
- 909 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 10:23:45.47 ID:BObIlSOA0.net]
- >>893
インストールするアプリはユーザーデータフォルダのどっかに保存しないと駄目じゃん どこでも置けるやつはexeと同じ階層に設定ファイルあったほうが使いやすいじゃん ってだけしか気にしたことない
- 910 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 10:30:58.10 ID:hjSAU91p0.net]
- >>894
れすさんくすです 確かにそのとおりだとおもいます インストーラーではなく、ZIPとかで配布で、ちいさなアプリで、主にシングルユーザーで ってなると.iniになるんでしょうか?
- 911 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 10:31:02.26 ID:elsuYLim0.net]
- >>893
設定を保存するクラスを作って、xamlかjsonにシリアライズ アプリのコピーで使い分けるなら、保存場所はアプリのexeと同じフォルダー
- 912 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 10:34:16.80 ID:BObIlSOA0.net]
- >>896
xmlとjsonなんて編集できるツールあるの? パンピーにインデント壊さないでねなんて無理よ
- 913 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 10:43:34.43 ID:elsuYLim0.net]
- >>897
元の質問に設定ファイルを手動で編集したいなんて書いてないが
- 914 名前:デフォルトの名無しさん [2019/10/05(土) 10:47:20.84 ID:xk/GxZ7j0.net]
- jsonもxmlもインデント関係ないから自由にさせろ
強制したいならyaml使え
- 915 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 12:25:09.61 ID:8Jk2Tveb0.net]
- >>897
インデントわろた
- 916 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 12:42:35.73 ID:sqkLDT76d.net]
- >>897
インデントwwww
- 917 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 15:47:01.45 ID:BObIlSOA0.net]
- インデントっていうかカッコの対応?
でもその一点でxmlとjsonっておよびじゃ無くない? これらを使うなら設定ツールが必要になると思う
- 918 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 16:03:44.47 ID:8Jk2Tveb0.net]
- よく出てこれたな
- 919 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 16:30:09.26 ID:BObIlSOA0.net]
- >>903
何度でも言えるよ xmlとjsonは設定ツールがないと使えないゴミ
- 920 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 16:44:26.62 ID:LN1PiSPK0.net]
- 設定画面ぐらい作れよ
- 921 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 17:02:10.69 ID:8Jk2Tveb0.net]
- >>904
よおインデント
- 922 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 17:07:55.98 ID:hjSAU91p0.net]
- >>896
れすさんくす 結構ハードなことやってるんだね、一度クラス作ったら一緒か
- 923 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 17:16:21.03 ID:q6cvuv6U0.net]
- >>906
よおインシデント
- 924 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 17:17:03.15 ID:JDr+zhso0.net]
- >>907
今どきならjson.netを使うだけ ググればわかるけど呆れるほどかんたんだよ
- 925 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 18:01:24.61 ID:vEDwovccd.net]
- インポテンツ
- 926 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 18:06:22.26 ID:PVJcrjgV0.net]
- 初心者スレやからね
- 927 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:34:08.92 ID:hjSAU91p0.net]
- >>909
さんくす、ライブラリが公開されてるのか みんなこれ使ってるの?
- 928 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:36:45.83 ID:1kVSHcIG0.net]
- 令和の時代の新規プロジェクトでiniファイルはありえんだろw
- 929 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:38:02.29 ID:1kVSHcIG0.net]
- >>912
今のところデファクトスタンダードなライブラリだね
- 930 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:39:42.31 ID:BObIlSOA0.net]
- >>913
設定ファイルをユーザにどうして欲しいの?
- 931 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:46:18.14 ID:1kVSHcIG0.net]
- >>915
サンプルのjsonを添付してここを変更しろとドキュメント付けとけば問題ない インデントが変わっても問題ないし
- 932 名前:デフォルトの名無しさん [2019/10/05(土) 19:51:52.36 ID:kB6gz2T/F.net]
- >>913
www6.uniovi.es/cscene/CS3/ values.c
- 933 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:56:00.01 ID:8wZmV3QG0.net]
- >>912
俺はDataContractJsonSerializerだな これなら標準ライブラリだからインストール不要
- 934 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 19:57:33.02 ID:BObIlSOA0.net]
- >>916
jsonはカッコの対応で死ぬわ っていうかxmlもjsonもiniファイル駆逐できるほど性能よくねーじゃん っていうか用途が違うものを強引に適用しようとしてない? 設定ファイルに書いたコメントも消えちゃうしね
- 935 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:01:44.88 ID:BObIlSOA0.net]
- iniファイルを時代遅れだと主張するなら
xmlやjsonで吐き出して設定ツールぐらい用意しろってことかな? それなら理解できるけど xmlとjsonのテキスト編集はキツイ
- 936 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:08:26.65 ID:1O88xYRBd.net]
- ユーザーがやることはjsonの値をちょい変更するくらいなのになんでカッコ対応が問題になるんだよ
ユーザーがカッコを書く必要なんてないのに
- 937 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:11:42.09 ID:BObIlSOA0.net]
- >>921
いや、だからそれどこよ? ってのを見つけるのも結構骨が折れる作業よ だから、コメントをjsonファイルに書いておくだろ? ところが次のアプリの書き込みで消えてるんだなw
- 938 名前:デフォルトの名無しさん [2019/10/05(土) 20:13:16.91 ID:jRdA7zB80.net]
- 話はよーわからんが、JSONに慣れれない人もそれがあんたの能力なんだから
しょうがないんじゃない
- 939 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:13:46.83 ID:WowcC4IHr.net]
- >>922
ちゃんとしたエディターかIDE使えば? VScode使えば対応簡単だけど まさかメモ帳でやってんの?
- 940 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:16:05.57 ID:BObIlSOA0.net]
- そもそもバグったときに凶悪であることは認めるだろ?
俺らだってxmlやjsonファイルでユーザーが編集したおかしな箇所を プログラムでピンポイントで指摘できない このファイルは完璧でないと読めない そんなモノをユーザーに触らせるような運用は間違っている 客がいいって言うならいいけど
- 941 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:16:19.70 ID:WowcC4IHr.net]
- vscodeとかtsとかnode.jsとか設定はjsonだけど
それで大問題にはなってない みんな使いこなしてる 何故君だけ使えない? iniファイルなんて実際死んでるよ?
- 942 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:16:43.74 ID:BObIlSOA0.net]
- >>924
それを客に言うの? 趣味ならいいけど
- 943 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:17:55.69 ID:WowcC4IHr.net]
- >>927
客がなんでjsonファイルいじって中にコメント書くのかが分からん お前がいつまでボケ続けるのか興味があるが…
- 944 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:18:25.25 ID:BObIlSOA0.net]
- >>928
え?開発者向けなん?
- 945 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:19:04.85 ID:r/LR5Bg3d.net]
- iniファイルとかWin16の時代の化石だろ
- 946 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:19:40.75 ID:WowcC4IHr.net]
- 本当にいつまでボケ続けるのか
実務に携わってないんだろうなってのはわかる 空転を本人が気づいてない
- 947 名前:デフォルトの名無しさん [2019/10/05(土) 20:20:51.17 ID:jRdA7zB80.net]
- よく出てくくる、一本道コードのVisual Basicおじさんでしょ
- 948 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:21:03.98 ID:BObIlSOA0.net]
- はっきりさせておくけど
・設定ファイルをテキスト編集でユーザに触らせたい →xmlやjsonは向かないんじゃない? ・設定ファイルをユーザに触らせない →なんでもいいんじゃない? ってことな
- 949 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:22:45.53 ID:BObIlSOA0.net]
- あともう一つ
・ユーザは開発者である →なんでもいいんじゃない って感じな
- 950 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:24:09.45 ID:WowcC4IHr.net]
- ・設定ファイルをテキスト編集でユーザに触らせたい
の時点で間違ってる バックアップすら取るかどうかわからんやつらに編集させんな馬鹿
- 951 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:24:53.35 ID:hjSAU91p0.net]
- >>914
なるほど、これはもうjson.netいれるしかないですね >>918 MS謹製のJson、これはかなりとっつきやすそうさんくす
- 952 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:25:02.19 ID:BObIlSOA0.net]
- >>935
じゃあ、俺と君の意見は一致してるね
- 953 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:25:51.75 ID:WowcC4IHr.net]
- ボケた会社の〜ボケた開発者が〜ボケた客にボケたことをさせて〜
メンテナンス費用だけとるつもりですか〜 死ね糞ゴミ!
- 954 名前:デフォルトの名無しさん [2019/10/05(土) 20:28:30.38 ID:jRdA7zB80.net]
- でも、初心者なのに仕事を取ってくる勇気は大したもんだよね
- 955 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:38:04.30 ID:8wZmV3QG0.net]
- >>933
俺なら >・設定ファイルをテキスト編集でユーザに触らせたい →そんな仕様にはしない なぜならあらゆるフォーマットに対応する実装とテストなんてしたくないし そもそも設定をテキスト編集するアプリとか使いにくい >・設定ファイルをユーザに触らせない →xmlにする なぜなら実装が簡単だし、開発者(俺)ならテキスト編集できるから
- 956 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 20:51:43.64 ID:RYV31rLj0.net]
- レガシーコードってなんかかっこいいから、どんどん増やすべき。
伝説の武器みたいなものでしょう。
- 957 名前:デフォルトの名無しさん [2019/10/05(土) 21:28:22.83 ID:Apziqq2fa.net]
- >>936
2chだとやたらとJSON推しの人が多いけど、.NET標準のシリアライザは他にもいろいろあるよw JSONに固執する必要がないなら他を検討した方がいいと思うけど
- 958 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 21:40:37.42 ID:kmFdI7ZBM.net]
- MSがJSON推しだからね
- 959 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 21:42:52.25 ID:mrk3SroR0.net]
- JSONは連想配列に順序の保証がない
デバッグで差分比較するとかができない
- 960 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 21:45:37.47 ID:ZEfzfdRr0.net]
- 連想配列に順序ってそんな重要なんか
- 961 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 21:50:21.48 ID:SzWcISg6d.net]
- >>942
.NET標準でjson以外にほかにいろいろシリアイザがあるって、XML以外何かある?
- 962 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 21:54:42.26 ID:hjSAU91p0.net]
- >>942
なるべくネット上に解説とかサンプル多いと楽かなっと 多数派に流されるお
- 963 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 22:05:26.81 ID:VWTAP42j0.net]
- json schema用意すればvscodeで補完効くし、間違いも指摘してくれるし、普通json使うわ
- 964 名前:デフォルトの名無しさん [2019/10/05(土) 22:54:13.79 ID:Apziqq2fa.net]
- DataContractJsonSerializer、使ったことなかったが調べた感じ
一通りの機能はあるし、バージョントーレラントみたいだし、別にこれでもいいねw バージョントーレラントじゃないと思ってたが、勘違いだったみたいだ。
- 965 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 23:34:01.62 ID:1i4Kj4Snd.net]
- トーレラントって何かググってみたけど中華鍋しか出てこない
- 966 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 01:39:32.41 ID:z+z4mE1D0.net]
- 確かにJsonはコメントが書けないか
コメント用の文字列メンバを予め確保すれば良いのかな
- 967 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 01:49:26.58 ID:DPash9Py0.net]
- jsonのシリアライザ/デシリアライザは送受同じライブラリを使わないと、割とめんどい。
DateTimeの扱いとか。 あとライブラリによってはpublicクラスじゃないとダメとか変な制限があるものも・・ DataContractJsonSerializerは変換遅いし、いちいち[DataContract]や[DataMember]などのアノテーションがめんどい
- 968 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 02:10:45.36 ID:uOvq13Pn0.net]
- 以前REST APIを作ったときはVisual Studioがjson.netを利用するコードを自動生成してたけど、今はDataContractJsonSerializer化されてるのかな?
- 969 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 07:22:38.42 ID:DbrcOQgy0.net]
- >>953
System.Text.Json
- 970 名前:デフォルトの名無しさん [2019/10/06(日) 11:26:53.05 ID:yc9LKsYB0.net]
- >>939
software.aufheben.info/kouza/kouza_socket.html >936 cjson
- 971 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 12:18:55.28 ID:jjEkd1/A0.net]
- windows formsアプリについての相談なんですけれど、ロジックと見た目を分けろって聞くじゃないですか。なのでそうしようと思ったんです
例えばユーザーコントロールを作って、そこに何かしらの処理を行うボタンを配置したとします それで自分が考えたのは、計算をするクラスをユーザーコントロールクラスの内部クラスとして作る、ユーザーコントロールクラスのフィールドとしてその計算するクラスのインスタンスを持たせる でボタンが押されるイベントで計算をするクラスのオブジェクト.calculate()みたいにする 設計としてはこんな感じでも大丈夫ですかね?アプリを作る時に内部のコードはこう実装するみたいなことを教えてくれる本が無くてどう設計していけばいいのかわからないんです
- 972 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 12:29:48.44 ID:ofI4YMfJM.net]
- 右も左もわからないうちから俺俺アーキテクチャとか考えないで
MVCやMVVMでも勉強したらいいと思うよ それから最強のアーキテクチャを考えるのでも遅くない
- 973 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 12:31:03.82 ID:U/2g+4lB0.net]
- >>956
>ロジックと見た目を分けろ windows formsアプリじゃなくWPFやった方がいいんじゃない? windows formsでそんな組み方するの逆にめんどくさい
- 974 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 13:48:38.81 ID:wAV7A9/e0.net]
- >>955
cjsonはわかりやすいのかな、ちょっとしらべてみるさんくす
- 975 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 13:52:51.65 ID:44yIwJmG0.net]
- >>956
そんなことしなくて良い 画面アプリなんて使い捨て上等 サーバーサイドと画面(クライアント)を分けろって話で 一つのアプリでそんなことやっても無意味
- 976 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 14:51:46.94 ID:BLgAYnXt0.net]
- そんな訳は(規模にもよるけど)当然無い。
- 977 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 15:03:12.76 ID:Ih3UpniZ0.net]
- 「既存メソッドの処理なんですが?ちょっと時間かかっちゃうんですよねー
プログレスバーとかつかないですかね? 処理の進行状況も表示して」 こんな簡単な要望ですら そいつはケツまくって逃げ出すよ 花京院の魂を10000個ぐらい
- 978 名前:かけてもいい絶対だ
処理と表示は一見関係ないように見えて実は密接に関係していて 絶対に切り離せない 不可能なことを可能だと言う技術者を信用してはならない 何年もやっていてこの程度の因果関係もわからんような雑魚から 教えを請いてはならない [] - [ここ壊れてます]
- 979 名前:デフォルトの名無しさん [2019/10/06(日) 15:33:01.89 ID:ZrFisUz2a.net]
- >>956
何でユーザーコントロールの話になるのかよく分からんけど、 >ユーザーコントロールクラスの内部クラスとして作る この部分は変だけど(内部クラスにする必然性がない)、その後の部分はそういう認識でいいと思うよ。 FormでもUserControlでも、基本的に書いていいのは上に乗ってる コントロールを操作するコードとイベントハンドラだけ。
- 980 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 18:11:15.25 ID:SEX7i46w0.net]
- >>962
C#にはIProgress<T>というクラスもタスクも横断的に使える便利なIFがあるから あんたが思っているようなことはない つか、偉そうなのにこれ知らないのか?
- 981 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 18:45:20.34 ID:pgF6GacOr.net]
- 自分は頭が悪すぎてIProgress<T>のどこが便利なのかわからないので
違う仕組みでやってる
- 982 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 19:21:15.12 ID:Ih3UpniZ0.net]
- >>964
はぁ? 既存の何も考えずに作ったメソッド(内部)のプログレスバー(表示)を分離したまま実装できないだろってのが俺のレスの主旨なんだけど 理解した上で反論しようとしてんの? Mr.ドン・キホーテ?
- 983 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 19:26:16.12 ID:SEX7i46w0.net]
- >>966
いや、簡単に実装できるよ 君が知らないだけで
- 984 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 19:36:10.31 ID:Ih3UpniZ0.net]
- >>967
あっそ、絶対無理なのにバカだなお前 テメーはさっさと技術者やめて詐欺師に看板替えろ
- 985 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 19:38:07.20 ID:fpn8B7qc0.net]
- 昔はイベントハンドラで実装してたな
いまならObservablePropertyあたりでやるんかねRxとかどうも上手く使えてる気がしない
- 986 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 19:43:10.12 ID:fpn8B7qc0.net]
- >>968
いやできるだろう
- 987 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 19:53:20.87 ID:SEX7i46w0.net]
- >>969
確かにmvvmだとReactiveProperyを上位に伝搬するのが楽だし俺もそうやっている でもFormsの話のようだからIProgress<T>を出しました
- 988 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 20:02:50.65 ID:dGqjDCnwr.net]
- FormsだとしてもIProgressは不便だと思うよ
- 989 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 20:07:52.17 ID:DbrcOQgy0.net]
- >>972
なぜ?
- 990 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 20:18:09.12 ID:LuDxacSca.net]
- ID:Ih3UpniZ0って昨日iniファイル以外認めないって主張してた御仁か
15〜20年くらい前のスキルしかもちあわせてない人でしょ 技術的なキャッチアップも人間性の向上も怠って年齢だけ重ねてる人だからこういう物言いしかできないんだろう こういう人のいうことは表向きだけはいはいって聞いたふりして全部無視して問題ないよ
- 991 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 20:27:29.93 ID:dGqjDCnwr.net]
- ほっとくとイベントの参照が残ってるのでひとりでに消えなくなってしまう
- 992 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 20:39:48.56 ID:fpn8B7qc0.net]
- >>975
backgroundworkerを自前で作らずにformに貼って、イベントもデザイナから作るといいよ
- 993 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 20:40:18.92 ID:DbrcOQgy0.net]
- >>975
ソース
- 994 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 23:21:15.76 ID:zXgX+PCrr.net]
- ソースもくそもみんなそう
- 995 名前:デフォルトの名無しさん mailto:sage [2019/10/06(日) 23:28:20.92 ID:zXgX+PCrr.net]
- c# メモリリーク イベントハンドラ
- 996 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 00:20:35.80 ID:ilJKwzD30.net]
- だからIProgressでメモリーリークするソース出せってば
- 997 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 07:55:39.68 ID:PXpMNqVGd.net]
- IProgressはインターフェースなんだからそれ自体がリークってのはおかしいでしょ。使い方が悪いだけでは…?
- 998 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 08:49:33.99 ID:jeQW+1qp0.net]
- オッペケは自殺して転生して自分の頭のバグ直してこいやボケ
- 999 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 18:13:25.65 ID:jsaaj6Lxr.net]
- インターフェイスでメモリリークするわけがないはその通り
ただ単純なイベントハンドラベースだとうっかりメモリリークさせやすい コンポジションなどで保持したままで寿命が違うと特にそう c++だとメモリリークしやすいが使い方が悪い!ちゃんとつかえ! という話で済まないので進化し続けてる そのProgressというけど偽りでProgressと言う動作と何の関係もない 実際はどこからも使われないく自分で使うコードを書くだけなのでProgressである必要もない どこが便利で使ってるのかさっぱりわからない
- 1000 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 18:17:14.49 ID:jsaaj6Lxr.net]
- 見返すとめちゃくちゃだけどIpregressは別にProgressに高度に特化されてないので
使う意味は薄いのではないか? nさんがどう思うか知らないけど
- 1001 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 19:14:35.69 ID:ilJKwzD30.net]
- ここまで具体的なコードは無し
- 1002 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 20:06:05.04 ID:GbsEPSwo0.net]
- >処理と表示は一見関係ないように見えて実は密接に関係していて
>絶対に切り離せない ちゃんと考えて設計してもそうなるなら、絶望的にセンスがないわ おまえに不可能なことが技術的に不可能なこととは違うよ
- 1003 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 20:18:37.37 ID:9eyAES450.net]
- 次スレ
ふらっと C#,C♯,C#(初心者用) Part145 https://mevius.5ch.net/test/read.cgi/tech/1570446977/ ワッチョイ無しは ふらっと C#,C♯,C#(初心者用) Part141 https://mevius.5ch.net/test/read.cgi/tech/1544838367/
- 1004 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 21:20:35.04 ID:jsaaj6Lxr.net]
- >>985
理解できないなら無理にレスしなくてもよい
- 1005 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 21:45:53.70 ID:/mGKDAACa.net]
- >>987
乙
- 1006 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:15:03.54 ID:QEMDFqtE0.net]
- >>987
乙
- 1007 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:16:20.26 ID:ilJKwzD30.net]
- >>988
はよ
- 1008 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:40:26.54 ID:H1QHa3mL0.net]
- >>986
バカだろ 物理的に不可能だろ 既存処理にプログレスバー付けてみろよ
- 1009 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:42:41.65 ID:d+4AHn7d0.net]
- IProgressというか、その実体のProgres<T>クラスは、普通に使えばメモリーリークなんか起こらないんだよな
イベントじゃなくてActionデリゲート使ってメンバ変数など使わずにローカル変数で定義して 処理を実行するたびにインスタンス作ればいいだけ ラムダ使えない人はご愁傷さまとしか言えません
- 1010 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:50:14.57 ID:jsaaj6Lxr.net]
- >>993
外から複数のハンドラ指定して実行したい場合どうすんの? Actionにどうやって渡す?
- 1011 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:52:08.75 ID:jsaaj6Lxr.net]
- それと
> 普通に使えばメモリーリークなんか起こらないんだよな と > イベントじゃなくてActionデリゲート使ってメンバ変数など使わずにローカル変数で定義して > 処理を実行するたびにインスタンス作ればいいだけ は矛盾してるよね?
- 1012 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:53:10.67 ID:s9APxj2Ed.net]
- >>994
複数のアクションを実行するアクションを渡す
- 1013 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 22:59:52.41 ID:d+4AHn7d0.net]
- >>995
サンプルぐぐっても、イベント使ったりクラスのメンバ変数にして使い回すって方が邪道じゃないかな?
- 1014 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 23:21:18.60 ID:cpqLM3c60.net]
- >>986
多分切り離すとか分離するの意味を根本から間違えて捉えてるんだと思うので無駄だよ。関心の分離の基本がわかってない
- 1015 名前:デフォルトの名無しさん mailto:sage [2019/10/09(水) 02:47:43.58 ID:mpcY/05P0.net]
- ぅ
- 1016 名前:デフォルトの名無しさん mailto:sage [2019/10/09(水) 02:47:58.78 ID:mpcY/05P0.net]
- め
次スレ ふらっと C#,C♯,C#(初心者用) Part145 https://mevius.2ch.net/test/read.cgi/tech/1570446977/
- 1017 名前:1001 [Over 1000 Thread.net]
- このスレッドは1000を超えました。
新しいスレッドを立ててください。 life time: 84日 11時間 11分 35秒
- 1018 名前:1002 [Over 1000 Thread.net]
- 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。 ─────────────────── 《プレミアム会員の主な特典》 ★ 5ちゃんねる専用ブラウザからの広告除去 ★ 5ちゃんねるの過去ログを取得 ★ 書き込み規制の緩和 ─────────────────── 会員登録には個人情報は一切必要ありません。 月300円から匿名でご購入いただけます。 ▼ プレミアム会員登録はこちら ▼ https://premium.5ch.net/ ▼ 浪人ログインはこちら ▼ https://login.5ch.net/login.php
- 1019 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|