1 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 22:53:21.18 ID:dhjmiKBp0.net] !extend:checked:vvvvv:1000:512 次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為) 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください >>980 を踏んだ人は新スレを建てて下さい。>>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part152 mevius.5ch.net/test/read.cgi/tech/1629888256/ ■関連スレ C#, C♯, C#相談室 Part94 mevius.5ch.net/test/read.cgi/tech/1553075856/ ■コードを貼る場合は↓を使いましょう。 https://ideone.com/ https://dotnetfiddle.net/ ■情報源 https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries/ https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/ https://docs.microsoft.com/en-us/dotnet/standard/class-libraries/ https://referencesource.microsoft.com/ https://source.dot.net/ ・Insider.NET > .NET TIPS - @IT https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html ・DOBON.NET .NET Tips https://dobon.net/vb/dotnet/index.html VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
692 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 20:41:28.24 ID:X0X6y0PK0.net] 先輩社員から「まずはメモリダンプとって調べてみろよ」と無理難題言われたとか
693 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 20:47:08.84 ID:el47HiNu0.net] Drワトソンって解雇されてたのか。
694 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 21:01:51.64 ID:uYZKVP770.net] メモリダンプを見ると 変数とかスタックとの内容がじかにわかるので デバグの助けになるかもしれない そこまで必要になることは珍しいけど
695 名前:デフォルトの名無しさん [2022/01/16(日) 21:18:19.12 ID:VfeV/Qg80.net] >>677 ダンプ解析入門 - Visual Studioでの可視化によるC#トラブルシューティング - Grani Engineering Blog の説明読むとどういうことがわかるかわかります
696 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 21:38:53.48 ID:zIpkfF6j0.net] >ダンプ解析入門 - Visual Studioでの可視化によるC#トラブルシューティング 読んでみたけど支離滅裂な記事だった でもメモリダンプ吐くよう設定する方法はちゃんと書いてたぞ
697 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 21:40:20.63 ID:P0LzLgpAM.net] >>683 出世して Watson Server として MS で働いてます
698 名前:デフォルトの名無しさん [2022/01/16(日) 21:42:20.27 ID:VfeV/Qg80.net] https://docs.microsoft.com/ja-jp/dotnet/core/diagnostics/dumps ここ読むと環境変数だけでいけそうだができませんです
699 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 22:06:33.35 ID:aMgjkUSV0.net] C#でメモリダンプが必要って、C#の利点捨てまくったクセの強い作りしてるんちゃうか UnsafeゴリゴリとかそれC#で作る意味あるのっていう
700 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 22:08:28.63 ID:8g0F/aL60.net] >>686 書くやつも書くやつなら読むやつも読むやつってことだな
701 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 22:17:34.06 ID:8g0F/aL60.net] まあ、そんなもん調べても結局使ってるライブラリがタコでしたなんて可能性もあるし それより先にやることあんじゃねーの? 的な
702 名前:デフォルトの名無しさん [2022/01/16(日) 22:20:42.02 ID:VfeV/Qg80.net] 長時間連続運転するプログラムなんだけど、ちょっとずつメモリ使用料が増えていくななんて 時はメモリダンプ一択だと思うんだが・・・ というかID:8g0F/aL60さんはC#のメモリダンプ何回くらい使った経験あるの? ゴミクズのような経験から導かれた結論は、やっぱりゴ
703 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 22:24:55.74 ID:el47HiNu0.net] 例外機構が当たり前になった今ではアプリ内でcatchするだけですからね。 仮にテストですり抜けてもcatchしたらエラーログに吐けよと。 今ではWinDbgでカーネルダンプ解析するぐらいかな。
704 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 22:27:14.39 ID:el47HiNu0.net] C#はガベコレあるからメモリリーク気にしないでいいって後輩が言ってました!!!
705 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 22:41:54.12 ID:RG8YDX1E0.net] 少しずつメモリ使用料が増えていくとか、 Ruby みたいに、世代別GC を使っていたら、 古世代は閾値を越えるまで実行されないかも知れないし、 さらに、メモリ領域が大きいと、閾値もかなり大きいだろうし、なかなか実行されない
706 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 23:17:44.09 ID:8g0F/aL60.net] >>692 正直ないね 無駄だから c#でリークの対応なんて無駄 精々頑張った挙げ句にウチの会社が組んだところじゃない箇所でリークしてて対応できません みたいな事実がわかるだけ まず、c#みたいな 厳密なメモリ管理ができない言語での 組み方を学ぶべき 3日に一度再起動するとか 機能毎にモジュール化して動かすたびに破棄するとかな 廃棄したらガベコレ適当に実行してりゃOSが片付けてくれるだろ
707 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 23:31:50.74 ID:I0k7QK8La.net] 何のお役にも立てんけど、「メモリ使用料」って結構じわるねwww まあマネージドなユーザーコードでリークが発生する原因は限られてるし、 ユーザーコードじゃないならどうしようもないし、ブル中野みたいな大鉈振るう必要って 確かにあるのかなという気はする
708 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 23:40:43.96 ID:zIpkfF6j0.net] >>692 メモリ使用量が増えるならまずはプロファイラーじゃないか?
709 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 23:42:20.42 ID:zIpkfF6j0.net] C#でも断続的に性能が極端に悪化する問題みたいなのが発生したときに 性能悪化したタイミングでダンプ吐かせると糸口がつかめたりする そういうのはだいたい.NET Frameworkとか下位の部分が原因だけど 原因が明確になれば回避策が取れる
710 名前:デフォルトの名無しさん mailto:sage [2022/01/16(日) 23:44:56.33 ID:8g0F/aL60.net] >>699 それもうガチでわかんねーときの最後の手段で まずはデバッガで見てみるべきじゃね? 最近は結構いい機能が付いてる VC6の時代とは違う
711 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 00:12:14.01 ID:BWxacq0R0.net] C#でのリークは大抵長寿命のeventに+=してるだけでしょ
712 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 07:41:52.27 ID:MbNkwuBfa.net] GDIなどのシステムリソースの解放忘れとか
713 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 09:30:07.53 ID:9uEhEVX70.net] リリースの特殊な(?)解放方法なんて半ば作ったやつの趣味だからな 可能であれば別モジュールにしてキックして終わりがいい 個人製作的な(会社内であっても)ライブラリだとusingのdispose実装忘れはよくある 信じて使うと後ろからバッサリだ
714 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 10:45:22.36 ID:TWhgTM4G0.net] もう半年以上起動しぱなっしの.NET5で作ったスクレイピンクツールあるけど25mbで安定してるな
715 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 12:44:47.10 ID:DKJy6PH50.net] >>704 25ミリバールって気圧かよw
716 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 13:14:05.94 ID:U4Fph
] [ここ壊れてます]
717 名前:VWG0.net mailto: ミリビットだろ、この板なんだから [] [ここ壊れてます]
718 名前:デフォルトの名無しさん [2022/01/17(月) 13:15:12.00 ID:XdTy16+8M.net] ミリバールって昭和かよ
719 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 13:45:40.07 ID:McAG9Ljja.net] マネージドな世界で閉じている限り、Disposeの実装ミスや呼び出しの忘れは リークの原因には普通はならないと思うけどね。 単にリソースの解放が逐次的でなくなるだけ。
720 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 13:52:14.45 ID:NIAK/ICvM.net] >>708 Disposeが呼ばれたらstaticなイベントからハンドラを削除するような実装は低品質なライブラリなんかだとたまに見かける
721 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 14:02:14.57 ID:s/zLKX0LM.net] >>708 > GDIなどのシステムリソースの解放忘れとか の話の流れで > マネージドな世界で閉じている限り とか頭おかしいのか?
722 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 14:05:18.68 ID:McAG9Ljja.net] >>710 頭がおかしいのは君の方 普通のプログラマはマネージドなライブラリを挟んで 間接的にGDIのリソースを利用するんであって直接使ったりしないの だからライブラリのコードにバグがない限りGDIを間接的に 利用しているからといってリークの原因にはならないんだよ
723 名前:デフォルトの名無しさん [2022/01/17(月) 14:10:54.78 ID:McAG9Ljja.net] ついでに言えば、俺は別に>>702 に反論したわけじゃないw すごい被害妄想だよねw ネトウヨさんじゃねえのw
724 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 14:26:56.43 ID:ly062VWjM.net] 普通のプログラマw 無能の言い訳に多用されてて笑う
725 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 14:40:41.16 ID:IUPVmsWca.net] 理想のマネージドだったらdisposeなんて関係ないし、メモリリークなんて起きない でもc#は理想のマネージドじゃないんだよ・・・
726 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 15:20:30.64 ID:C2NpqJUJM.net] ゲロみたいな話題で盛り上がってんなあ
727 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 17:33:38.89 ID:0pf4TYua0.net] っぱRustよ
728 名前:デフォルトの名無しさん mailto:sage [2022/01/17(月) 19:32:54.18 ID:rqpdgGXW0.net] mb ミリビットもジワるwww
729 名前:デフォルトの名無しさん [2022/01/18(火) 09:23:03.79 ID:HVobsaMl0.net] 低レベルな質問で恐縮です。VisualStudioを使っています。 やりたいことは、定期的に更新されるcsvからデータを取得しDataGridViewに表示させたいです。 (つまり、DataGridViewでリアルタイムに更新されているように見せたい) 取得・更新することはできたのですが、更新時にソート状態が解除されて困っています。 DataTable・DataSet・DataSource・データバインドなどのキーワードを見つけて調べているのですが、理解力が乏しく解決できていません。 こんな方法があるよと、ヒントになる助言をいただけたらありがたいです。 よろしくお願いします。
730 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 10:13:54.13 ID:Tap2eyJjM.net] >>718 DataGridViewのSort順を復元するだけでは?
731 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 10:18:04.98 ID:jhcMMPao0.net] ・DataGridViewにどうデータをセットしているか、どう更新しているか ・どうソートさせているか ・ソート状態が解除というのは結局どういう状況になっているのか を具体的に
732 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 11:36:28.39 ID:HVobsaMl0.net] 反応ありがとうございます。 >>719 更新前にソートされている列を取得して、更新後に強制ソートする という感じですね。試してみます。 >>720 >DataGridViewにどうデータをセットしているか 今の状態は、あるサイトにのっていたコードをコピペして試しています。 //フォームデザイン //csvデータ:person_read.csv //button4のソース ソースコードはこちら ttps://dotnetfiddle.net/i89pR3 ///////////////////////////////////
733 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 11:37:01.32 ID:HVobsaMl0.net] >・どう更新しているか button4を押すたびにcsvからデータを更新しています(実現したらtimerで自動更新に変更予定) >・どうソートさせているか >・ソート状態が解除というのは結局どういう状況になっているのか button4クリック→初期状態(csv並び順) GUIのdataGridViewの任意の列(
734 名前:痰ヲば年齢)をクリックしソート 1,山田,25 3,鈴木,28 2,佐藤,30 4,山田,46 csvに 5,田中,37 が追加される button4クリックで更新 csvの並びに戻る(希望はこの順で表示させたい) 1,山田,25 → (1,山田,25) 2,佐藤,30 → (3,鈴木,28) 3,鈴木,28 → (2,佐藤,30) 4,山田,46 → (5,田中,37) 5,田中,37 → (4,山田,46) 以上です。 [] [ここ壊れてます]
735 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 11:43:01.00 ID:HVobsaMl0.net] リンクが404になっていたので貼り直しします。 これで大丈夫か心配ですが。 https://dotnetfiddle.net/ulZ3M9
736 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 13:08:53.17 ID:jhcMMPao0.net] DataTableの場合ソート順は dataTable.DefaultView.Sort に文字列で格納されるからこれを使えばいい
737 名前:デフォルトの名無しさん [2022/01/18(火) 13:20:14.01 ID:k1mhP8XB0.net] C#で正規表現のperlでの「tr」と同じ事をしたいのですが、 Regexクラスにそれっぽいのがありません。 何か方法はありませんでしょうか?
738 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 13:29:49.03 ID:pQS/rHaxa.net] trは置換なのか?だったらc# regex 置換とかでぐぐりゃ方法出るだろ 痴漢じゃないなら知らない
739 名前:デフォルトの名無しさん [2022/01/18(火) 13:41:14.96 ID:k1mhP8XB0.net] 置換ではあるのですが、 pattern [a-z] replacement [a-z] とすると半角英字が全角英字に変換されるといった感じです
740 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 13:52:43.16 ID:pQS/rHaxa.net] 正規表現でマッチした位置とマッチした文字列を取り出すのはできる 正規表現関係なく文字列を全部変換するってならできる これを組み合わせて自分でやるしかないんじゃない?
741 名前:デフォルトの名無しさん [2022/01/18(火) 13:54:14.42 ID:9szJ9jA+0.net] Regex.Replace(mojiretsu, "[a-zA-Z]", p => ((char)(p.Value[0] - 'a' + 'a')).ToString()); 動確はしてない。
742 名前:デフォルトの名無しさん [2022/01/18(火) 14:04:35.01 ID:k1mhP8XB0.net] なるほど、やはりないですか ありがとうございました
743 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 18:17:30.27 ID:UqX3jEvG0.net] 全角半角ならVB.NetのStrConv使えばいいじゃね
744 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 18:27:21.22 ID:80llBYJsr.net] c#って全角半角変換でまともなメソッド用意してないよな
745 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 18:49:27.58 ID:HVobsaMl0.net] >>718 です。 .SortedColumn で現在のソート選択列を取得 ListSortDirection で昇順・降順の状態を取得 データ更新後、.Sort で更新前のソート状態を復元することができました。 >>719 さん>>724 さんヒントをありがとうございます。 >>720 さん、気にかけていただいてありがとうございます。 また何かあればよろしくお願いします。
746 名前:デフォルトの名無しさん [2022/01/18(火) 19:17:27.38 ID:DZmAMHWt0.net] >>732 C#の言語仕様にそんなのあるわけないだろうが 頭がおかしいのかな?
747 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 19:30:02.02 ID:uGAsykz90.net] .NETのことだろ。 あれ本当に不便。
748 名前:デフォルトの名無しさん mailto:sage [2022/01/18(火) 19:44:39.78 ID:g9d5Z42+a.net] 全角無視した比較はあるんだから変換もあればいいのにな .net6はいたるとこでCultureInfo受け取れるようになってるから、オリジナルCultureInfo作ってやればtolowerなんかはできそう
749 名前:デフォルトの名無しさん mailto:sage [2022/01/19(水) 04:15:15.58 ID:4BL/bkWB0.net] nuget辺りに.net言語で使える漢字処理モジュールみたいのないの
750 名前:デフォルトの名無しさん [2022/01/19(水) 13:57:55.37 ID:b1tRS/0c0.net] あの、Asp.netMVCでサイトを作ったんですが、 robots.txtって Global.asaxと同じ場所もしくはViews\Layout.cshtmlと同じ場所 のどっちに置けばいいんでしょうか?
751 名前:デフォルトの名無しさん [2022/01/19(水) 22:04:21.46 ID:67zDZ4RH0.net] WebProgという板があるからそっち言ってみれば?
752 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 08:59:26.49 ID:fgAfnzipM.net] >>738 デプロイしてみればわかる話を
753 名前:、何故聞いてしまうのか? [] [ここ壊れてます]
754 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 10:11:03.18 ID:8HL1zORE0.net] めんどいじゃん ネットでクダ巻いてるゴミが代わりに試して教えてくれれば儲けもんだろう?
755 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 12:57:10.80 ID:MJ6I7RR7r.net] おっ、そうだな
756 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 14:46:47.86 ID:n7chvAG30.net] >>741 うそを教えられるという可能性は考えないのか?
757 名前:デフォルトの名無しさん mailto:sage [2022/01/20(木) 18:34:05.33 ID:NL1fx3HA0.net] すでにサイト作ってる段階なら、掲示板で聞くより自分で試すほうが早いと思うんだがなぁ
758 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 00:57:35.59 ID:yyC8EMRk0.net] 共変と反変という言葉がよく分かりません アップキャスト/ダウンキャストと何が違うんでしょうか?
759 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 02:01:57.32 ID:r2dC59Vr0.net] class B{} class C:B{} class D:C{} static D Function(B b){ return new D();} Func<C,C> fp = Function; Functionの返り値DはCの派生クラスだから返り値CのFunc扱いしても大丈夫だよねってのが共変 Functionの引数BはCのベースクラスだから引数CのFunc扱いしても大丈夫だよねってのが反変 両方ともアップキャスト(asがいらない)が約束されてるから許される
760 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 04:17:33.74 ID:9FYmM/Q0a.net] ハロウィンの子供にチョコレートを渡せることが反変で チョコレート工場をお菓子工場とみなせることが共変ってことか
761 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 08:32:03.92 ID:kufT2hajr.net] よく理解できるね これを理解したとしても他人がコードを読むの大変だよね コメントに書いておくものなの?
762 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 10:57:27.37 ID:r8LIAXWEM.net] c#自体にそういう機能があるので楽だねって感じ うまくいかない場合は何か思い違いしてる
763 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 22:48:46.71 ID:0wwLw+zrM.net] >>746-747 めちゃくちゃ分かりやすいです ありがとうございました
764 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 22:52:58.30 ID:DQ1OUxKV0.net] なにこれ もしかしてnullになるかもしれんやつは片っ端から?つけなきゃいけなくなったの??
765 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 23:17:35.13 ID:Yoc43dCB0.net] そうだぞ
766 名前:デフォルトの名無しさん mailto:sage [2022/01/21(金) 23:37:35.61 ID:DQ1OUxKV0.net] なんか俺かっぺになった気分だべ・・・
767 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 01:35:08.87 ID:xgyvtLBZ0.net] nullチェックをコンパイラが管理するやつだから慣れれば神機能
768 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 06:49:46.16 ID:sQZaaq50M.net] 参照前に必ずnullチェックというコーディング規約から解放される?
769 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 07:48:24.01 ID:dpfIrrzB0.net] なわきゃあない
770 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 08:36:39.06 ID:odBVOzqN0.net] on/offを行単位で切り替えられるから混乱すると思う
771 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 09:30:40.13 ID:AMYiKIMXM.net] 行単位でそんな事する奴はすでに混乱してるだろw
772 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 09:57:57.24 ID:dGbyTm5r0.net] 何が利点なんだろうネ?(笑)
773 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 10:16:46.92 ID:z2LDxi9+M.net] まあ利点がわからないなら君は今のままでいいんじゃね?
774 名前:デフォルトの名無しさん [2022/01/22(土) 10:35:14.93 ID:tP9M/cw30.net] 5年ぶりに.Netで作ることになったんだけど、.Net Frameworkってオワコンなの? Coreとか出てきてさらに.Netに統合されるとか混沌としてて何が今の最適解なのか解らない。 どうせ作るなら今の最適で作りたいからお聞かせ願いたい。 つかWPFって普及前に死んだ感じ?
775 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 10:40:46.17 ID:om6KWGu40.net] .NET FrameworkはオワコンだけどWindowsに標準で入ってるのでWindowsユーザー視点だと一番有難い WPFもWinFormsのWindowsであれば現役
776 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 11:13:26.21 ID:dGbyTm5r0.net] .netもオワコンだが WPFもオワコンなので 代わりがない状態 他のはもっと過疎ってて .netやWPFより更に消えやすい感じ なので何もオススメできない状態
777 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 11:41:22.99 ID:cBfIrJY2a.net] オワコンっても単なる流行の話だからな中身はオワコンでもない .NET Framework 4.8 .NET6 今選ぶならこのどちらか。どっちも長期サポートになってるはず 表面的にはどっち選んでも同じ。昔の記憶が残ってるなら4.8使った方がスムーズに扱える UIは色々増えてるけどwinだけならWinFormsが無難
778 名前:デフォルトの名無しさん [2022/01/22(土) 11:45:58.45 ID:tP9M/cw30.net] >なので何もオススメできない状態 調べる限り、今はコレってのが無いんだよね。 WPFも生き腐れしてるみたいなので、 無難なWindowFormsと.Net Framework4.6.Xで良いやって思ってます。 ぬるぬるUIによる快感性はiOSに任せようと。
779 名前:デフォルトの名無しさん [2022/01/22(土) 11:49:15.98 ID:tP9M/cw30.net] >.NET Framework 4.8 ユーザーのコンピュータには.NET Framework 4.6が入ってるので 5年程度を稼働を目安にすると.NET Framework 4.6のが導入のハードルが 低くて良いなと思うのですが、.NET Framework 4.8のが何か優れてるんですかね? 純粋にサポートの長さかな。
780 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 12:08:19.50 ID:cBfIrJY2a.net] 4.6だと今年でサポート終了かな サポート気にしないなら・・4.xの差で機能的にはほとんど変わってないから何使っても同じ ただちょこちょこソースコードの書き方が追加されてる(変更じゃなくて追加だから昔の書き方で問題起きない) ぐぐってソースコードコピペしたときに新しい書式のソースコードだと思わぬエラーがでて困るかもしれないって程度 わざわざ古いの選ぶ意味もないけど、新しいの入れるのが面倒なら古いままでもいいんじゃないって程度だよ
781 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 12:11:29.47 ID:63g4vstfM.net] 基本的には.NET6を選べばいい 既存システムのメンテナンス・マイグレーションなら資産状況次第だけどFW48の方が低リスクで間違いない ランタイムのサポート期間は意外にもFW48の方が長い でも開発環境のサポート期間はわからない
782 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 13:06:27.03 ID:MOxbGC/+0.net] 最近は4Kとか高解像度ディスプレイ対応(スケーリング対応)が必要になって来たせいか WPFを使ってる所が前よりは増えた印象 他に良いのが無いから消去法で採用って感じ何だろうけど
783 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 13:10:19.88 ID:MOxbGC/+0.net] >>766 スケーリング対応は4.8の方が改良されてる もっと言えば.NET6の方が進んでるけど
784 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 13:16:37.15 ID:+eWEN8w/0.net] WPFでもMVVMを考えなくてもWinFormsと同じように使えるし、スケーリング対応が楽なのはいいよね あと最近のWindows10は標準で4.8が入ってなかったっけ?
785 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 13:25:41.09 ID:i+EsaIAtd.net] サポート期間を気にするなら.NET6は問題外だよ なんと2024年にサポート切れ
786 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 13:36:54.52 ID:63g4vstfM.net] 十分だよ .NETは互換性が高いから.NET8への移行も苦労はせんだろう 他の言語と比べたら天国だ
787 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 14:04:30.15 ID:MOxbGC/+0.net] >>771 WinFormsの*.Designer.csと*.resxから解放されるのも大きいね 差分を見たりマージするのに問題あり過ぎた Windows10はMay 2019 Update(1903)から標準で4.8が入ってる 現在サポート中のバージョンは全部4.8が入ってるね
788 名前:デフォルトの名無しさん [2022/01/22(土) 14:08:40.62 ID:gJEoCqwv0.net] 今の最適で作りたいなら.NET 6/WPFだな
789 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 14:33:41.83 ID:KL4k8E210.net] .NET Frameworkは最終版の4.8でもC#7.3までの対応 C#8.0は.NET Core 3 C#9.0は.NET 5 C#10.0は.NET 6 C#のバージョンを上げるなら.NETも移行せざるを得ない
790 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 14:35:53.77 ID:nTnTl9DUr.net] わかりました、Mauiで頑張る
791 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 14:44:13.78 ID:Ii2fD9R0a.net] WPFの方が高DPI(高「解像度」では必ずしもないよね)対応が優れているっていうのは DPIが異なる複数のディスプレイ間をウィンドウが行ったり来たりするような状況を想定した話?
792 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 14:49:58.72 ID:ARjVXSY1M.net] WPFってWebみたいに解像度に合わせて画像切り替えるとか標準じゃできないだろ? HDPI対応が優れているとか片腹痛い
793 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 15:19:51.12 ID:EyuzyEvM0.net] 俺社環だと2012R2なんで4.5.1なんだよな サポート外だからさっさと4.6移行に切り替えたいけど、不具合出てないから誰もやりたくないという
794 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 16:54:28.58 ID:1FaTcT0G0.net] >>779 そんなもん解像度は取得できるしなんとでもやりようあるやろ つうデスクトップGUIアプリに求めることかそれ? どんなシチュエーションで必要なのかわからん
795 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 18:01:32.84 ID:dpfIrrzB0.net] 想像力が無いだけだなあ
796 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 18:55:07.04 ID:Hnp3kh2k0.net] >>780 誰もやりたがらないけど、OS のサポート切れが迫ってきて対応中。w いまさらその上で動いてるオレ様ソフトのインストールの手順とか覚えてないんだけどなあ。
797 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 19:41:02.79 ID:DSkywrpw0.net] ドキュメントは残しておけよw
798 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 19:49:34.26 ID:vcUHcBQYM.net] 昔自分用に作った(家で自分の時間を使って)アプリがあって退職時に無理やり引き継ぎさせられて勝手に使われてる PC壊れたときに連絡あってアプリを送った思い出…
799 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 19:51:39.05 ID:vcUHcBQYM.net] 毎日使うものなので劇的に工数が減った あくまでも自分用 それを恨みこそすれ感謝してない元会社がタダでずっと使ってる
800 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 21:17:29.45 ID:9EvEVFCn0.net] Main内 Test t = new Test(); t.Num = 1; t.Add(10); Console.Write(t.Num); class Test { public int Num {get; set;} public int Add(int p) { return Num + p; } } これで出力が1になるのは何故なのでしょう?11になると思うのですが…
801 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 21:22:02.32 ID:vcUHcBQYM.net] return Num + p; これは足したものを返してるだけで Num自体に変更をかけていないからな Num = Num + p; return Num; ならわかる
802 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 21:37:34.36 ID:9EvEVFCn0.net] あ、、、確かに。納得しました。 ありがとうございました
803 名前:デフォルトの名無しさん mailto:sage [2022/01/22(土) 23:20:32.09 ID:mmM8IstB0.net] いえいえ
804 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 14:44:30.58 ID:is+XSiL/0.net] すみません、初心者で何からしたら良いのか、何をすべきなのか分からなくて助けてください。 計算アプリを作らなければならず、調べてなんとかボタン配置とかはできたのですが、プログラミングが何をどういった順番でするのか分からなくて… 計算は 固定数字÷ボタン入力した数字(+必要に応じて選択した数字)×ドロップダウンで選択した数字 これを出来るようにしたいのですが、やるべきことは @ボタンとドロップダウンの紐付け?認識? A入力した数字の表示 B()の条件付け C計算結果の表示 これで大丈夫でしょうか? うまく質問できず、申し訳ありません。 今までプログラミングに触れたことが無く、必要情報が不足していましたら追加致します。
805 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 15:13:55.20 ID:XkFSmW1wd.net] 今期の単位は諦めましょう
806 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 15:15:05.76 ID:Wu5qqWWYa.net] ボタン押したらボタンに対応した値を表示する(固定値で割らなくておk) それができたら、次は固定値で割った結果を表示するように修正 それができたら、次はドロップダウンの選択が変わったことを知る方法と選択された値を取得する方法調べる それがわかったら、ドロップダウンの値を掛けた結果を表示できるように修正 それができたら、どんな条件でこういう計算するって条件別け かな?
807 名前:デフォルトの名無しさん [2022/01/23(日) 15:16:44.75 ID:CCpFlBt8M.net] それを決めたら他の人がコードを書いてくれるのか? それならマルナゲをオススメ
808 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 15:20:46.99 ID:is+XSiL/0.net] >>793 ありがとうございます! 直ぐにやってみます。 やるべきことを分かりやすく教えて頂き、本当にありがとうございます。
809 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 15:30:22.12 ID:is+XSiL/0.net] >>794 いえ、コードも私が書かなければなりません。 丸投げする相手が居ないです…
810 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 19:04:59.40 ID:nwzKJ0xW0.net] ひっでえ課題 そんなもんが何の足しになるんや
811 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 19:47:07.31 ID:is+XSiL/0.net] やっと、数字の表示ができました…… 何故か一桁しか表示されなくて、次の数字押したら上書きされるけど、表示はできました… 何のたしになるかは分からないです… 曰く『コロナ禍だけど、この機会に家で出来きることをしよう!』って事らしいです。
812 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 19:48:24.39 ID:is+XSiL/0.net] 投稿が重複してしまいました、誠に申し訳ありません。
813 名前:デフォルトの名無しさん mailto:sage [2022/01/23(日) 23:26:33.12 ID:pR5ferbX0.net] メンバー'hoge' はインスタンスデータにアクセスしないため、static にマークできます
814 名前:デフォルトの名無しさん mailto:sage [2022/01/24(月) 12:21:02.64 ID:bXxRLmwJ0.net] 四角をグラフィックに描画する場合の座標について g.DrawRectangle(pen, 始点x座標,始点y座標,幅,高さ); このようにあります ならば幅が2,2の場合 g.DrawRectangle(pen, 16, 16, 2, 2); これで(16,16)-(17,17)で2ドットだけの中抜きがないものを想像するのですが 実際は (16,16)-(18,18)の中央に穴がある状態の四角が描画されるようです これは3,3指定なら理解できるんですが 幅指定なのになぜこのようになってしまうのでしょうか?
815 名前:デフォルトの名無しさん mailto:sage [2022/01/24(月) 12:39:27.95 ID:zeqExr0Ka.net] g.DrawRectangle(pen, 16, 16, 1, 1); g.DrawRectangle(pen, 16, 16, 0, 0); こいつらはどういう挙動をするべきかを考えたら?
816 名前:デフォルトの名無しさん mailto:sage [2022/01/24(月) 13:27:00.02 ID:VRumLvNTM.net] GDIは終点は描画領域に「含まない」 だから、幅として成立する。 FORTRAN由来とかで「含む」系 もあるので注意だ
817 名前:デフォルトの名無しさん mailto:sage [2022/01/24(月) 14:09:38.84 ID:97kNTb42a.net] >>801 まあこうは言える。 まずユークリッド幾何学的な数学的に抽象化された世界で考えるべき。 その世界では、1対の平行線の距離がペンの幅より大きければ必ず平行線の間に「隙間」が出来る。 GDI+の描画はこういう抽象化された世界をピクセルの世界に写像してるだけ
818 名前:デフォルトの名無しさん mailto:sage [2022/01/24(月) 18:54:49.46 ID:97kNTb42a.net] まあたぶんこんな感じだね (1) 論理座標の原点は(0, 0)のピクセルの中心に設定されている。つまり論理座標とピクセル座標は 0.5ずれている(少なくともペンの幅が奇数ピクセルの時は) (2) DrawRectangleは論理的な矩形の辺がペンの中心になるように描画する (3) だから描画された矩形はペンの幅の1/2 * 2だけ指定したサイズより大きくなる
819 名前:デフォルトの名無しさん mailto:sage [2022/01/24(月) 19:46:14.25 ID:ph7NlGryd.net] 小数のない世界なら厚みゼロで隙間がないんだろうけど、塗りつぶすならFillRectngleで明示しろってことかな。
820 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 22:02:24.84 ID:AwkrZJuk0.net] 独習C#やってるんだけど、これを一通りやれば基本は身に付くと思っていい?
821 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 22:03:27.85 ID:3T3OgJ8A0.net] 信じるしかないだろ。もう買ってしまったのだから。
822 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 22:23:59.29 ID:bPaq+vdr0.net] >>807 その本なら自信持って良いよ。 record, using var, initなどのC#8以降の機能は別途学習が必要。 LINQや正規表現などは実践でないとなかなか身につかないので、だいたい理解したらどんどん読み進めるのがおすすめ。 ちなみにプログラミング未経験で、全部読むのに3ヶ月かかりました。
823 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 00:57:13.82 ID:TS8Lm52TM.net] 自分だったら3か月かかるならモチベーションが保てそうにないなw 20年前はそんな本がなく手探りだったけど逆に良かったのかな…
824 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 01:14:23.92 ID:TS8Lm52TM.net] 仕様もライブラリも今よりペラペラだったから入門しやすかった
825 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 01:55:09.45 ID:4qIztPSU0.net] >>809 ありがとう プログラミング経験はエクセルVBAのみ C#は簡単な方だと聞いてたけど難しいね、頑張ります
826 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 12:37:45.33 ID:IaxANYMEd.net] やっつけ仕事するだけなら今も昔も変わらんと思う C#の便利機能が山ほど増えてて書きやすくはなってるけどどこまでが入門なのかは正直わからん
827 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 13:20:24.56 ID:S6jLK41vM.net] Recordとかぜってえ使わねえ
828 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 13:32:46.48 ID:MBxJE5i40.net] ともーじゃん? ・・・まあ使わなくても済むよなあ
829 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 13:50:18.74 ID:wOQPCoOZM.net] DTOだらけの低品質なコードが量産されてTypeScriptみたいになりそうな気はしてる
830 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 14:28:40.80 ID:pfxZ0tMsd.net] おれも独習で勉強した 分厚いから真ん中ぐらいまでくると最初の方忘れてるわ んでもう一度戻ってやり直したり、途中で挫折したりで 1年以上うだうだ読んでた 読み終わる前にいろいろ作って遊んでたけど イベントとか非同期処理とか分からないとまともなの作れないんで 途中すっ飛ばしてその辺読んだり
831 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 19:22:56.75 ID:uxP3YVvMH.net] >>817 その独習、旧版(ハーバード・シルト)?
832 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 19:59:28.45 ID:zF2HduXmM.net] シルトは過去の人 昔読んだ時もそういうイメージ 文法ぐらいが得意分野
833 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 21:16:01.91 ID:uxP3YVvMH.net] >>819 では最近の教科書で優れたものは、どなたの著作ですか?
834 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 00:27:57.09 ID:XnQeNwtl0.net] 俺はオライリーの薄いやつで大体把握して、デザパタをjavaの結城さんのやつで学んだな
835 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 10:26:45.87 ID:i4V+v3ft0.net] C++の本で勉強した知識だけでC#の本は買わず、dobonを見ながら書いてる
836 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 00:37:45.37 ID:UrWQ/KNN0.net] dobonよく参考にしてるけどもしかして見てるとバカにされる風潮とかあるの?
837 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 00:43:53.93 ID:OmkEpZCo0.net] 昔はよくお世話になったけど、今となっては古い記事が多いので最近はあまり見ないな
838 名前:デフォルトの名無しさん [2022/01/28(金) 05:13:54.08 ID:AmULl7RP0.net] 全ページのヘッダに古い言語仕様の内容であることの明示くらいはしてほしい あと初心者向けと言いながら 同じ処理でベストプラクティスと非推奨な書き方を同列に載せてるのも印象よくない
839 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 08:13:42.95 ID:MUNMfoCeM.net] recordはvalueobject作るのに便利 使い捨てのアプリ作るのには不要
840 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 12:18:41.61 ID:g6bFcMDaM.net] で、あるか
841 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 14:24:04.65 ID:C+lFkEfx0.net] お世話になります。 ComboBox.IsReadOnly を使おうとしてエラー(usingまたはアセンブリが不足)が出ました。 https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.controls.combobox?view=windowsdesktop-6.0 で調べ、 名前空間:System.Windows.Controls アセンブリ:PresentationFramework.dll を追加しました。 しかし、現時点でエラーに変化がなく困っています。他に考えられる原因があればお教えてください。
842 名前:デフォルトの名無しさん [2022/01/28(金) 14:32:54.24 ID:QwC8uFzi0.net] 「他」とか言われてもお前以外にゃわからんのよ
843 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 14:38:21.72 ID:S6VsJW6p0.net] >>828 追加したのはWPF用のアセンブリだけどお前が作ってんのはWPFじゃなくてWinFormsだとか
844 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 15:20:17.24 ID:D0DTDHxMd.net] ComboBoxのインスタンス作らずにプロパティ見ようとしてるとか? プロジェクトのエラー起こしてるコードさえないからわからん
845 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 15:31:53.40 ID:C+lFkEfx0.net] >>829 >>830 反応ありがとうございます。 はい。WinForms(VisualStudio使用)です。 ソリューションエクスプローラーの参照からアセンブリを探して追加しました。 WPF用ではなかったか確認します。 using System.Windows.Controls と書いて追加した気になっていましたが、 ソリューションエクスプローラーに同名がないのを確認しました。これが原因かもしれないので調べてみます。 >>831 盲点でした。確かにインスタンス化していません。やってみます。 みなさんのアドバイスのおかげで糸口が見えました。あとは自力で頑張ってみます。 また困ったことがあればよろしくお願いします。
846 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 15:36:53.16 ID:bcAzYVuU0.net] >>832 横からレスだけど、次からは情報を端折らずに書いてね 場合によるから
847 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 15:38:40.89 ID:bcAzYVuU0.net] >>832 833の追記 WinFormsのComboBoxはSystem.Windows.Formsの方だったはず
848 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 15:51:48.62 ID:C+lFkEfx0.net] >>832 反応ありがとうございます(横レスでも大歓迎です) 情報を端折ってしまったようで今後気を付けます。 必要になる正しい情報とはこちらでよろしいですか? エラー CS1061 'ComboBox' に 'IsReadOnly' の定義が含まれておらず、型 'ComboBox' の最初の引数を受け付けるアクセス可能な拡張メソッド 'IsReadOnly' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足していないことを確認してください それとも部分的であってもソースでしょうか?今回の問題では必要ないと判断してしまいましたが、次回以降気を付けます。 次回もぜひお願いします。ありがとうございました。
849 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 16:04:30.29 ID:AFiLYmq20.net] 単に、WinFormsのComboBoxにはIsReadOnlyプロパティが存在しないだけだな https://atmarkit.itmedia.co.jp/ait/articles/0711/01/news152.html
850 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 16:32:10.58 ID:bcAzYVuU0.net] >>835 エラーメッセージもそうだけど、こっちが言ってたのは「WinFormsかWPFか」の方だね WinFormsの方のComboBoxにはDropDownStyleプロパティがあるからこれにComboBoxStyle.DropDownListを渡せば選択可能で文字列入力を受け付けないタイプになるよ (まあ、他の人がすでに提示しているようだけど)
851 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 16:34:15.50 ID:ycXEhqEs0.net] もしかして Enabled
852 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 17:05:47.31 ID:C+lFkEfx0.net] みなさん親切で涙が出てきます。 >>836 ・837・838 反応ありがとうございます。 ・C#にはWinFormsの他にWPFがあったのですね。WPFという言語なのかと思っていました。 今後はエラーメッセージと共にWinFormsであることを最初に宣言します(初心者すぎてすみません) IsReadOnlyプロパティが存在しない ・はい。通常のプロパティでは見つけられませんでした。 こちらのサイトを参考にさせてもらい挑戦していました。 https://blog.t5o.me/post/20140316/c-sharp-xaml-combobox-read-only.html ・ComboBoxStyle.DropDownListとEnabledも試しに設定しました。 やりたいことは、 コンボボックス横にチェックボックスを設置 チェックボックスが真の時、コンボボックスを規定値にし操作不可能にすることですが、 上記設定でもドロップダウンボタンが反応するので別の方法を探し、上記サイトにたどり着きました。 ・第2案として、チェックボックスが真の時、コンボリストを規定値以外を削除し対応しようかと考えています。 (ドロップダウンリストが空白で1行出てきてしまうのがかっこ悪いかなと考えて最善を探していました) なんとか頑張ってみます。みなさんありがとうございました。
853 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 17:14:46.64 ID:AFiLYmq20.net] >>839 System.Windows.Forms.ComboBoxを継承してカスタムコントロールを作るってのが調べると出てくると思うよ 例えばこんなのとか jeanne.wankuma.com/library/readonlycombobox/
854 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 17:20:12.41 ID:OmkEpZCo0.net] >>839 839のリンク先もそうだけど、記事にXAMLって単語があったらWinFormsと無関係だと思って良いよ WinFormsのコンボボックスの操作不能にするのは、comboBox.Enabled = false;
855 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 19:13:46.87 ID:l6dMzLky0.net] c# + visual studioでデータブレークポイント使えますか? c#のクラスは参照型ですが、値のコピー (int型変数i,jだと、i = jに相当する処理) するにはどのようにすればよいのでしょうか?
856 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 19:27:11.67 ID:LzvJDC40a.net] ブレークポイントの上で右クリ→条件
857 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 20:10:31.96 ID:LzvJDC40a.net] コピーはコピー先をnewして作って、メンバー変数の値をそこに一個ずつコピーしてく クラスによってはそういうnewとコピーをしてくれるClone()を持ってることもある
858 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 16:47:47.80 ID:3whatsSd0.net] 独習C#で学習されている方が多そうですがマルチスレッド難しすぎないですか(泣) 新版を使っておりますが、P530〜の説明が意味不明です awaitとWait()メソッドの違いがよくわかりません どちらもタスク(サブスレッド)の処理を待機するという同じような意味という理解ですが、 なぜかサンプルプログラムで両方使われています 試しに片方削除して実行すると、ループが最後まで実行されないので、意味が違うんでしょうが調べてもよくわかりません… どなたかご教示いただけないでしょうか
859 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 17:25:22.69 ID:xNgrtKWR0.net] >>845 大別するならawaitは非同期、Task.Wait()は同期的、という所だけど Task.Wait()は単純にその場でタスクの終了を待つので足踏みする事になる awaitを使うと内部的にはその後のコードもTask化されてas
860 名前:yncメソッドの返り値になる awaitまで到達した時点で呼び出し元に処理が戻るので、主にUIスレッド等でよく使われる 後続処理を追加するだけならTask.ContinueWith()も有るんだけど UIコンポーネントは作成スレッドからしかアクセスしてはならない制約とか 後続処理を担うスケジューラ指定とか煩雑なのを纏めて糖衣構文にしたのがawait [] [ここ壊れてます]
861 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 18:18:28.62 ID:5CdUE0YMa.net] >>845 助手(他のスレッド)がタマネギを炒め終わるのをジャガイモの皮を剥きながら待つのがawait 手を止めてじっと待つのがWait awaitが画期的なのは、「助手の仕事が完了するまでは別の仕事をしつつ、完了後に やりかけの仕事の続きをする」という本来シーケンシャルでない手続きを、あたかも 「助手の仕事が完了したら続きをやる」という単純なシーケンスであるかのように記述できること
862 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 18:22:38.33 ID:p/SD7W260.net] async汚染に注意な
863 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 18:50:59.09 ID:wjo4lb340.net] awaitの正体は「Taskがすぐに終わらなかったらすぐにreturnする特殊構文」ってことを知っておけば理解はしやすいと思う Taskが終わったらさっきawaitしたところから(途中処理を飛ばして)再開する 関数先頭に特殊構文を使うことを明記(async)しなきゃいけない (FormとかWPFとかのGUIアプリなら裏で勝手にやってくれるから気にしなくていいが) Taskが終わった後にawaitから再開できるように呼び出し元のスレッドでDispatcher.Run()しとかなきゃいけない
864 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 19:19:00.14 ID:7kxnQq4mr.net] awaitは「あ!まって!」って覚えればいい
865 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 19:28:39.37 ID:RKF0PElVM.net] await 〇〇やっといてよろしく。私いったん席外すんで終わったら連絡ちょうだい。続きこっちで引き継ぐから Wait 〇〇やれや!終わるまで後ろでじっと見とるからな!はよせえよ! どっちがいい?
866 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 19:41:45.39 ID:S+vKlyc9a.net] Threadが一番わかりやすいw
867 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 20:51:42.02 ID:kkw3q4n30.net] たとえが分かりやすいですw イメージがわきました、みなさんありがとうございます! もう一点だけ確認なのですが、asyncメソッドのawaitよりあとのプログラムに移るタイミングですが、 メインスレッドでプログラムが実行中のときはどちらが優先になるのでしょうか?
868 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 20:57:28.48 ID:z01vGxpA0.net] >>853 OSの気分次第
869 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 21:26:41.18 ID:qmqxr6WH0.net] WinFormという前提でいうと まず前提としてメインスレッドではずっとメッセージループっていうループが回ってる でマウスの入力とか再描画要求はメッセージって形でキューに貯められる メッセージループはキューから1つメッセージを取り出してはアプリの実装に流してくる ちなみにその辺のシステムメッセージはWinFormだとMouseMoveとかPaintとかのイベントとしてアプリが対応することになる await以降の処理もこのメッセージを使って実現してるから メインスレッドの手が空いて次のメッセージを処理できる態勢になるまで待たされる
870 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 22:02:51.88 ID:p/SD7W260.net] スレッド 注意点一覧 ・シングルコアで動くか? ・応答がないときに自決するか? ・失敗時のメモリリークはないか? ・タイムスケジュールはあるか?(例:1分の内AスレッドはX秒、BスレッドはY秒等) ・生存確認方法はあるか? ・実行中の状態は取得できるか? ・ログは出力できるか? ・最大使用メモリは把握できているか? ・失敗時のリザルトの受け取り方法は適切か? ・処理が複数失敗する可能性は考慮できているか?(例:ファイルオープン成功→ファイル書き込み失敗→ファイルクローズ失敗→tempフォルダ削除成功のとき何が返る?) ・本体終了時に終了できるか?
871 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 23:49:44.87 ID:kkw3q4n30.net] ありがとうございました!
872 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 01:12:48.99 ID:XLpABEj80.net] C#のマルチコアなんたらっていう非同期処理のテキスト読んだらいいよ
873 名前:デフォルトの名無しさん [2022/01/30(日) 03:05:22.41 ID:2zm6GvSaa.net] async/awaitとTask.Runの使い分けが今でもよくわからん。。
874 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 09:00:16.50 ID:F79hzdqmr.net] >>856 それどこかに書いてあったな 5年くらい前の記憶でそのリストがあった
875 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 11:27:59.00 ID:zEfMsuv9M.net] それ多分C#じゃなくて組み込みとかの話だから参考にならんよ
876 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 14:20:38.52 ID:6d5Lec+00.net] >>861 え?どこにC#だと助かる要素があるの?
877 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 15:48:10.14 ID:WELts56MM.net] >>856 この記事の内容が組み込みc++じゃないのかと
878 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 17:06:41.10 ID:6d5Lec+00.net] C++だと駄目でC#だと助かる要素なんて1つもないけど 今まで何やってたん?
879 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 17:17:33.02 ID:nTSKdiu90.net] >>856 これスレッドに限らずどのプログラムにも言えることだと思うわ 出典元知りたい
880 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 17:18:42.01 ID:v/uLxU6j0.net] >>859 Task.Runとawaitは組み合わせて使うものだし、使い分けって何のことだろうか (同期する必要が無ければawaitしないことはある)
881 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 17:21:16.29 ID:cT0our3Wa.net] 助かるってどっかの方言なのかな。まったく意味わからなかったw ほぼすべてがc#(とVSの組み合わせ)で助かるか、マルチスレッド関係なくそのぐらい考えとけって項目
882 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 17:29:29.52 ID:6d5Lec+00.net] >>867 は?c#に特別なギミックなんてないが 君はスレッド使わないほうがいいね
883 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 19:59:30.72 ID:XMZDBma3d.net] またシングルスレッドおじさんの講釈が始まったのか
884 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 20:10:42.59 ID:Mi/4eGx6M.net] awaitのおかげで非同期書きまくる現代のプログラミングでこんなチェックリストいちいち考えてたら工数足りん それに現代の実行環境は優秀なんでほとんど考えなくていいよう出来てる C#もJavaScriptもそう C++とはもう時代が違う ・シングルコアで動くか?→普通に書けば当たり前に動く ・応答がないときに自決するか?→普通に書けばライブラリ側からタイムアウト例外出て落ちる ・失敗時のメモリリークはないか?→普通に書けばあり得ない ・タイムスケジュールはあるか?(例:1分の内AスレッドはX秒、BスレッドはY秒等)→大半のケースで環境に任せるのが正解。制御したいならより上のプロセスレベルで制御する ・生存確認方法はあるか?→死んだら例外でる出てないなら生きてる ・実行中の状態は取得できるか?→大半のケースで取得要件はない ・ログは出力できるか?→出来ないことなんてあるの? ・最大使用メモリは把握できているか?→環境に任せるのが正解。したいならより上のプロセスレベルで制御する ・失敗時のリザルトの受け取り方法は適切か?→例外で標準化されてる ・処理が複数失敗する可能性は考慮できているか?(例:ファイルオープン成功→ファイル書き込み失敗→ファイルクローズ失敗→tempフォルダ削除成功のとき何が返る?)→例外出たら止めろ。例外出ても進めるならしっかり設計しろ。そしてそれは非同期関係ない ・本体終了時に終了できるか?→普通に書けば猶予期間内に終了する。ロングランニングの時だけ気をつけろ
885 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 20:27:29.51 ID:MKtsah/wM.net] 各アプリケーションの機能テストで確認すべき項目と 非機能要求のテストで確認すべき項目と フレームワークの仕様テストで確認すべき項目と 全部ごちゃ混ぜだから分かりにくい タイムアウトを含め失敗時の振る舞いは一般的な品質レベルなら全部テストする項目
886 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 20:32:44.54 ID:cT0our3Wa.net] 組み込みになるとシングルコアで動くのにマルチコアで動かないとか、通信ライブラリが処理をつかんだままだとほかのスレッドが止まるとか(それマルチスレッドなのか?でも本当に起きる) そんな感じになっていくからな。特にFreeRTOSは・・・ c#だとlockとかを知らないと色々トラブル。そっちの方が重要だろ https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/statements/lock
887 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 22:57:40.72 ID:aiFnFmm30.net] doxygenって何処のスレで質問すれば良いですか?
888 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 23:50:15.42 ID:cT0our3Wa.net] スレ立てるまでもない質問はここで 158匹目 https://mevius.5ch.net/test/read.cgi/tech/1635193843/
889 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 00:03:34.26 ID:HAfOA5uC0.net] >>870 。oO(ああ、こいつダメだ、経験が少なすぎてなんも当たったことねぇのなw)
890 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 01:18:01.43 ID:rap/w09T0.net] GUIアプリ作るのにシングルスレッド縛りはありえねーって
891 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 01:20:52.56 ID:PXu70Z+W0.net] (応答なし)
892 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 01:30:02.02 ID:HAfOA5uC0.net] >>876 うまく行かなかったんだろ?w
893 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 02:43:38.51 ID:rap/w09T0.net] >>878 GUIアプリでシングルスレッド縛りだと重い処理で画面固まってるように見えてしまうからうまく行かないね
894 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 08:09:11.84 ID:RgoQRIUnM.net] >>870 のどこがダメなのか分からない スレッド制御を自前で1から書かなきゃいけなかった00年代ならともかく async/awaitにほぼすべてを任せられて非同期を安全お手軽に書けるようになってる時代なのにさあ 脳みその中もPentium4あたりで進化が止まった老害が async/awaitを当たり前に使う現在のコーディングスタイルについていけなくて 誰彼かまわずケチをつけてるだけにしか見えない 年取ってこういうゴミみたいなジジイにはなりたくないもんだ
895 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 09:50:16.85 ID:JauXjIS80.net] 何がしたいかによる await/asyncを使うのは主に外部要因で待たされる時 ダウンロード残り1GBとかSQLサーバーからレスポンスが2秒以上かかってるとか そういう感じの時クルクル回したりプログレスバーとキャンセルボタンが欲しいわけ ボタンすら反応しませんだと、クソ重いソフトと因縁つけられちゃうの 一方マルチスレッドでCPU100%がん回しですってのがしたいことだったら Partitioner.CreateとParallel.ForEachを使うawait/asyncは関係ない
896 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 10:15:13.28 ID:FSK5xZBqM.net] 大半のケースで考慮不要 この一言でまあそうだよねと納得できないなら開発経験不足としか言えん
897 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 10:47:47.62 ID:F4OTxaxpa.net] もともとがc#に合わせた話じゃないからどうとでも読み取れちゃうんだよ 分かりやすいとこで言えば例えば > ログは出力できるか?→出来ないことなんてあるの? プログラミングの話をしてるのだからきちんと意図通りに動くことを把握するためのDebug.WriteLineのようなログと捉えたらできないことなんてあるの?となる でもログファイル出力と捉えたら、マルチスレッドから同じファイルに対して書き込もうとして・・・なんてできないこともある
898 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 11:33:05.16 ID:I+ECkei6M.net] そんなのはloggerがなんとかしてくれるから気にするな つか今時はログは全部標準出力でいい 標準出力を拾って何処に吐くかは環境が担当するところ
899 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 11:38:53.86 ID:BNlzdeLSM.net] >>883 > でもログファイル出力と捉えたら、マルチスレッドから同じファイルに対して書き込もうとして・・・なんてできないこともある キューに書くなりして排他制御するだけじゃね?
900 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 12:08:05.50 ID:F4OTxaxpa.net] そうなんだよ だからログ取るならこのクラス使え(c#が勝手にスレッドセーフにしてくれたり管理するよ) マルチスレッドからファイル操作するならlockで排他制御しろ(自分でスレッドセーフにしないとトラブルぞ) ってチェックシートならいいんだけどな
901 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 12:13:17.55 ID:a9TU5xJTa.net] オラオラ交通整理マン仕事しろや早く議論スレに誘導しろよ まさか交通整理マン自身が議論してるんじゃねえだろうな?ん? まあ、個人的には議論は結構だけど論点は明確にして欲しいね。 正直何を争ってるのかさっぱり分からんw こんなあいまいな話で藁人形と戦ってる奴って普段よっぽど邪険にされてるのかねwww
902 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 12:53:42.98 ID:80+F6Vz/M.net] かわいそうに
903 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 13:04:34.28 ID:dnOSCP4XM.net] >>886 > マルチスレッドからファイル操作するならlockで排他制御しろ(自分でスレッドセーフにしないとトラブルぞ) スレッドセーフならいいって話じゃないことぐらいは理解してから議論に参加しようよ…
904 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 15:26:32.90 ID:2TQISd5L0.net] あ、これ議論なの?
905 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 19:09:11.37 ID:yyWr14dta.net] 凄まじく複雑な相談なんだけど良い? インスタンスと対になる鍵オブジェクトって xxxIdかxxxKeyかxxxTokenのどれで名付けるべき? ちなみに中には格納番号が入っててリポジトリからインスタンスを引き出すのに使う
906 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 21:03:11.17 ID:eqy2NGbAd.net] 初心者スレだぞ 簡単な使い方ならともかく なんか動かんだのデータ壊れただのデッドロックしただのの対策を一気に詰め込んでも無理でしょ
907 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 21:27:15.36 ID:a9TU5xJTa.net] >>891 そもそも専用クラスにする必要あるの? っていうかこの板命名スレもあるよ いや目くじら立てて行くべきと言いたいわけじゃないw
908 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 11:07:54.02 ID:Z6xO941E0.net] IDを使うときは配列でインデクサがある、とか Keyを使うときは辞書でKey-Valueの対がある、とか Tokenを使うときは重複しない文字列(大抵はハッシュ)が入ってる、とか そういう話なのかな、C#とどう関係するのか知らんけど
909 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 11:19:59.86 ID:Tjw+V3tAM.net] 普通にハンドルパターンじゃないのか
910 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 12:10:52.81 ID:LUb4jo/Ua.net] object xxxと対になる鍵オブジェクト = new object();
911 名前:デフォルトの名無しさん [2022/02/01(火) 13:48:07.91 ID:1d/yMvRJ0.net] TextBoxの高さに合わせてFormの高さを調整したいのですが、下記のようにすると、TextChangeのたびに高さが減ってしまいます。 何が原因でしょうか? private void textBox1_TextChanged(object sender, EventArgs e) { textBox1.Height = textBox1.Lines.Length * textBox1.Font.Height; ClientSize = new Size(ClientSize.Width ,textBox1.Height); }
912 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 18:19:16.26 ID:R62wNw5Va.net] https://docs.microsoft.com/ja-jp/dotnet/desktop/winforms/advanced/how-to-obtain-font-metrics?view=netframeworkdesktop-4.8
913 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 18:21:14.03 ID:I6aD7b89a.net] TextBoxの高さに合わせてFormの高さを調整したいだけなのに textBox1.Height = でテキストボックスの高さまで変更してるからでは?
914 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 19:55:39.20 ID:x6m1XFOP0.net] >>897 一回目の呼び出しで フォントの高さに合わせてtextBox1.Heightを設定する(小さくなる) textBox1.Heightの高さに合わせてフォントの高さが変わる(小さくなる) 二回目の呼び出しで フォントの高さに合わせてtextBox1.Heightを設定する(小さくなる) textBox1.Heightの高さに合わせてフォントの高さが変わる(小さくなる) というループだからでわ? 少なくともtextBox1.HeightはtextBox1.Font.Height より少し大きいはずだから そのまま代入していくとどんどん小さくなるんだと思うわ
915 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 00:39:48.73 ID:TKyxc9mCa.net] >>897 これで出来た でも何か気付いてない問題がありそうw private void textBox1_TextChanged(object sender, EventArgs e) { var delta = textBox1.PreferredSize.Height - textBox1.Height; Height += delta; textBox1.Height += delta; }
916 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 01:06:16.73 ID:Xe1+J6sR0.net] TextChangedのイベントごとにHeight+=deltaの設計自体良くないとは思う イベントごとにテキスト内容からHeightの再計算させるなら理解できるが
917 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 01:14:48.57 ID:TKyxc9mCa.net] >>902 言いたいことは分からないでもないが、 恐らくセッター自身にプロパティーの値に変更がなければ何もせず戻る処理が 入っているはずなので考えすぎ。 実際問題動かしてみてそれに起因する問題があるようには見えない
918 名前:デフォルトの名無しさん [2022/02/02(水) 09:11:06.71 ID:RlffTed50.net] WinFormsのListViewで、仮想モード、LargeIcon表示にしたとき Shift+マウスクリックでの項目の範囲選択がクリック位置より広く選択されてしまいます。 以下は2008年の古い情報ですがWindowsXPの不具合のため回避困難とあります。 https://social.msdn.microsoft.com/Forums/ja-JP/484c578a-df46-4624-a4e7-99ceaa0588ef/2020624819212701237512383listview12391389173044612398350792596836?forum=vsgeneralja Windows10でも解消していないようなのですが、 検索しても有用な情報が見つからずどなたか回避できてる方いないでしょうか。
919 名前:デフォルトの名無しさん [2022/02/02(水) 09:12:35.95 ID:4XyzPXmZ0.net] スクリーンロックを抑止したくてネットで調べて下のようなプログラムを書きました。 static async void Test(){ for(;;){ SendKeys.Send("Break"); await Task.Delay(10000); } } 目的は達成したのですが、Test()メソッドを終了するにはどう書けば良いでしょうか? よろしくお願いします。
920 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 10:25:26.24 ID:qrF7Vqa00.net] static bool _stopTest; public void StartTest() { _stopTest = false; Test(); } public void StopTest() { _stopTest = true; } static async void Test() { while( !_stopTest ) { SendKeys.Send("Break"); await Task.Delay(10000); } } 止めたいところでStopTestを呼ぶ
921 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 11:00:41.80 ID:tkuApL0q0.net] CancellationToken使おう private CancellationTokenSource cts = new CancellationTokenSource(); private Task task; public void Start() { this.cts = new CancellationTokenSource(); this.task = Test( cts.Token ); } public void Stop() { this.cts.Cancel(); this.task.Wait(); // 必要があれば } static async Task Test( CancellationToken ct ) { while ( ! ct.IsCancellationRequested ) { SendKeys.Send( "Break" ); try { await Task.Delay( 10000, ct ); } catch ( TaskCanceledException ) { } } }
922 名前:デフォルトの名無しさん [2022/02/02(水) 12:33:54.15 ID:2OSrRGw90.net] >>842 >> c# + visual studioでデータブレークポイント使えますか? これひょっとして使えな
923 名前:デフォルトの名無しさん [2022/02/02(水) 12:47:34.78 ID:2OSrRGw90.net] c#でAddressSanitizerみたいなツールはありますか? >>これひょっとして使えな これは「これひょっとして使えないのでは?」です
924 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 12:49:24.20 ID:5pRqnuwX0.net] >>908 https://docs.microsoft.com/ja-jp/visualstudio/debugger/using-breakpoints?view=vs-2022#set-data-breakpoints-net-core-3x-or-net-5
925 名前:デフォルトの名無しさん [2022/02/02(水) 15:01:03.10 ID:MolDdSgsa.net] https://stackoverflow.com/questions/209281/c-sharp-equivalent-to-javas-wait-and-notify l foo.notify() => Monitor.Pulse(foo) foo.notifyAll() => Monitor.PulseAll(foo) foo.wait() => Monitor.Wait(foo)
926 名前:デフォルトの名無しさん [2022/02/02(水) 15:06:00.81 ID:MolDdSgsa.net] >>907 だと、クリティカルタスクの最中に例外が起きたら壊れそうだなw >>906 は、Pulseが抜けてる
927 名前:デフォルトの名無しさん [2022/02/02(水) 22:04:43.57 ID:GVJKCJUY0.net] ピクチャーボックスに直線を実寸(o)で引きたいんですけど、どうすればよいですか?
928 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 22:13:43.42 ID:NhKBMVet0.net] GraphicsオブジェクトのPageUnitプロパティを変更する
929 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 22:49:06.74 ID:p1re6OTba.net] >>913 GDI+はたぶん常にdpiを96dpiと仮定しているので モニターのdpiが96dpiなら>>914 で上手く行くがそれ以外の場合は 自分でページ変換を設定しないとだめだと思うよ
930 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 23:21:53.08 ID:vNzv2HbB0.net] GDI+のDPIは可変だよ 印刷にも使うんだから 描画先がモニタの場合WindowsのDPI設定に依存して変わる 例えば125%なら120dpiだな まあDPI設定に従うだけでモニタのDPIは恐らく別だからモニタ上で正しく表現できるわけではないけど
931 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 23:29:58.32 ID:30BhQoQ30.net] >>916 それってやっぱりモニターの解像度は96dpi固定ってことだろ 32インチ4Kスケーリング100%なら138dpiが取得できる方法を示さないと
932 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 23:31:34.80 ID:p1re6OTba.net] >>916 印刷時に物理単位(mmやインチ)を選択できるのは プリンタの場合はdpiを報告する仕組みが最初から確立してるからで ディスプレーの場合は残念ながらそうじゃないんでいろいろややこしいよw
933 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 09:28:12.33 ID:Nd7AcXHS0.net] 質問させてください。 起動すると適当な番号でhttpポートを開くアプリがあります(仮にaaaa.exe) このaaaa.exeのパスが分っている状態で、アプリが使用しているポート番号を取得したいのですが、どのように処理したら良いでしょうか?
934 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 09:46:56.82 ID:X/mng9aEM.net] >>919 netstat
935 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 13:48:25.19 ID:EdZmqiFt0.net] >>919 対象プロセスのプロセスIDを取得してGetExtendedTcpTable/GetExtendedUdpTableで取得できるデータと突き合わせる
936 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 14:20:51.83 ID:Nd7AcXHS0.net] >>920 >>921 ありがとう。今日の夜試してみる。
937 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 15:09:05.58 ID:1AlNHnvf0.net] いえいえ
938 名前:デフォルトの名無しさん [2022/02/04(金) 07:20:32.62 ID:34mLDZGV0.net] スクリーンロック抑止の者ですが、遅れながらメカニズムを理解できました! ありがとうございます! SendKeysで"Break"を定期的に押すと文章書いてる時に ガッツリ消えるので、何のキーが良いかは探求したいと思います。
939 名前:デフォルトの名無しさん [2022/02/04(金) 07:42:03.31 ID:QVbyni0c0.net] 似たようなソフト作ったことあるけど、キーを押下するよりマウスを現在位置から現在位置に移動するほうが普通に使ってるときの影響なくていいよ
940 名前:デフォルトの名無しさん [2022/02/04(金) 17:23:13.30 ID:34mLDZGV0.net] >似たようなソフト作ったことあるけど、キーを押下するよりマウスを現在位置から現在位置に移動するほうが普通に使ってるときの影響なくていいよ キーインする限り、どんなに使わないキーでも影響は避けられないと気が付きました。 マウス操作をトライしたいと思います。ありがとうございます。
941 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 21:42:43.56 ID:+ZxkHXQpd.net] 画面ロックというのが具体的になんなのかだけど Windowsシステムのスリープとか退席モードのことならAPIで抑制した方がいいのでは
942 名前:デフォルトの名無しさん mailto:sage [2022/02/05(土) 15:50:35.16 ID:qLntA6C8M.net] powertoysのawakeでいいだろ
943 名前:デフォルトの名無しさん mailto:sage [2022/02/05(土) 16:19:11.63 ID:yLNqj27S0.net] >>928 それはどうやって実装してるの?
944 名前:デフォルトの名無しさん mailto:sage [2022/02/05(土) 23:38:56.22 ID:x0YbOETD0.net] そりゃSetThreadExecutionState呼んでるやろなあ
945 名前:デフォルトの名無しさん mailto:sage [2022/02/06(日) 00:11:20.36 ID:66j2bw9/0.net] あとはキーボードフックでWin+Lを握りつぶせるかだな
946 名前:デフォルトの名無しさん mailto:sage [2022/02/06(日) 04:20:06.01 ID:D8jWL7f30.net] Win+Lとかまで対応する気ならOSの設定いじった方がいいのでは https://i-bitzedge.com/tips/how-to-lock-screen-enable-or-disable-on-windows-10
947 名前:デフォルトの名無しさん [2022/02/07(月) 12:45:48.73 ID:eA8tvD7r0.net] >Windowsシステムのスリープとか退席モードのことならAPIで抑制した方がいいのでは SetThreadExecutionStateを使うことでやりたい事がダイレクトに出来ました。 ありがとうございます! キーイン、マウスカーソルぷるぷるも、非同期処理の使い方を知れたので、 実り多かったと感謝しております。
948 名前:デフォルトの名無しさん mailto:sage [2022/02/07(月) 21:03:15.86 ID:yNoTcSOm0.net] 質問させてください EntityFrameworkを使用して自PC内(localhost)のPostgreSQLを操作しています 普段正常に参照や更新といった処理は出来ているのですが、極々まれにデータベースとの接続がタイムアウトするケースがあります データベースのログにもエラー等が無く、なぜタイムアウトになるのか根本の原因が掴めていないのですが、試しにタイムアウト設定の秒数を伸ばしている状態です お聞きしたい事は、EFは接続に失敗した場合、タイムアウトの秒数になるまで何度もリトライしているのでしょうか? また、失敗したクエリを再試行する事は可能なのでしょうか? 直接C#とは関係のない質問かもしれませんが、アドバイス頂きたいです
949 名前:デフォルトの名無しさん mailto:sage [2022/02/07(月) 22:00:16.47 ID:kx+AzsPB0.net] ほんとにタイムアウトなのかい? どこか閉じ忘れて接続数上限まで使い切ってるとかは?
950 名前:デフォルトの名無しさん mailto:sage [2022/02/07(月) 22:46:47.42 ID:0I88UVsz0.net] PostgreSQLだと割とあるみたいね、接続数の上限というの
951 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 04:32:53.12 ID:fYph1ArX0.net] >>935 ありがとうございます 接続する際はusingブロックで囲って使用しているので解放漏れは大丈夫だと思ってはいます… (こういう接続の仕方です:https://qiita.com/Nossa/items/b6d84aeb134abc85f027) 接続数に関してもpg_stat_activityを使用すると、タイムアウト発生時は見れていないのですが、正常時は15程度でした(デフォルトはMax100)
952 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 07:37:47.00 ID:2OtTL/zKM.net] ログに出すようにしたの?
953 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 09:23:52.16 ID:Ki5uCpbuM.net] >>938 System.TimeoutExceptionとSystem.Data.Entity.Core.EntityExceptionが発生している事は確認出来ました。 ただ、例外処理を書いていなかったので「ハンドルされていない例外が発生しました」以上の情報は得られませんでした… これらを調べても接続文字列が正しいか確認をするなどの記載が多いのですが、基本的に処理が正常に行われているのでここは問題ないのではかと考えてます…
954 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 12:22:11.88 ID:MACKR5LXd.net] 接続上限を疑って再現を目指すなら接続数をデフォルトから100→10に変えてもいいと思う ありうるシナリオは接続上限→接続空き待ち→待っても開かないからタイムアウト
955 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 12:30:36.89 ID:QQmTWHSUM.net] >>934 に便乗して NpgsqlでDB接続するコンソールアプリを1分おきに起動するタスクがあるんだけど、 それなりの頻度でStsyem.TimeoutExceptionで接続失敗しちゃう どこに問題があると疑うべきなのかなあ と思っていまログを確認したら 半年くらい前までは2〜3日に1回(=1/1000〜1/5000位の確率)でTimeoutしてたのが 最近だと月1回くらいしか起こらなくなってた・・・ 環境というかPostgreSQLサーバの負荷等の問題だったのかな・・・・・・?
956 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 12:38:00.12 ID:Vzn
] [ここ壊れてます]
957 名前:qt3iZa.net mailto: 同時に書き込アクセスできず待たされるのはよくある 書き込んでる奴が時間かかってたらタイムアウト プログラミング分かりやすくするなら、DBアクセスは排他処理して同時に複数接続しない。それで失敗はなくなるだろ [] [ここ壊れてます]
958 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 12:44:07.19 ID:m2Ico1fWM.net] >>939 TimeoutExceptionのエラーメッセージに何をした時にタイムアウトが発生したのかが書いてあるから まずそれを確認したら?
959 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 12:59:02.44 ID:nLjBt9+k0.net] 一概にタイムアウトと言っても、「接続タイムアウト」と「コマンドタイムアウト」があるからどっちが発生しているかをよく確認しないとね。 接続文字列のTimeout、CommandTimeout (もしくはコード上でef経由で個別設定しているとか) >>939 npgsqlが吐いてる例外をInnerExceptionで見れません?
960 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 14:08:23.98 ID:TsBQQX8fM.net] - 詳細エラーメッセージ - npgsqlとpostgresのバージョン - 再現コード この3点セットがあれば誰か調べてくれるよ .NETやOSの情報もあればなお良い
961 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 14:33:47.63 ID:Ki5uCpbuM.net] >>940 ありがとうございます なるほど、確かに下げてみれば再現が出来るかもしれません 早速試してみます これで同じエラーが出てくれれば良いのですが… >>944 タイムアウト設定に関して、Timeout、CommandTimeout共にデフォルトで運用していました 現在試しにそれぞれ60に伸ばしています InnerExceptionは例外の詳細ですよね? お恥ずかしい話ですが、例外処理を書いていなかったため、今回このエラーが分かったのもwindowsのイベントビューアで発見しました 急遽例外処理を入れたのですが、エラーが再現せず…
962 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 14:42:17.36 ID:Ki5uCpbuM.net] >>945 ありがとうございます 現在分かるエラー内容 @System.TimeoutException ASystem.Data.Entity.Core.EntityException 各種バージョン Npgsql:ver.4.1.3.0(ランタイムver.v4.0.30319) PostgreSQL:PostgreSQL 13.3, compiled by Visual C++ build 1914, 64-bit .NetFramework:4.6.1 OS:Windows10pro エラー発生箇所コード static void GetStartProcessTime() { using (var context = new DbContext()) { var processingTimeTable = context.CheckprocessingTimeTable.First(x => x.id== 1); processingTimeTable.CreateDate = DateTime.Now; context.SaveChanges(); } }
963 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 15:07:00.89 ID:Ki5uCpbuM.net] >>947 すいません言葉足らずでした エラーはその2つの例外情報は分かるのですが説明は「ハンドルされない例外のため、プロセスが中止されました。」となっており、それ以外はエラーに至るまでの内部的な関数?が呼ばれた場所が記載されている状態です その呼ばれた場所の最後が、エラー発生箇所コードとして記載させて頂いた部分です
964 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 15:35:11.95 ID:4pbgYgTcM.net] >>856 これをありがたいと思うのは変な人 分からないでありがたがってる >>870 が正解
965 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 15:42:07.62 ID:2+2aacXwr.net] まずは作成日みたいなフィールドを後で更新するなと。
966 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 18:40:08.93 ID:11RalhgJ0.net] >>947 これ同じ処理が複数同時に走る? 複数同時に走る場合でread committedならデッドロックになるケースじゃない? それが原因かどうかはわからないけどlog_lock_waitsがoffならonにしてしておくといいかも
967 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 18:50:37.00 ID:u9WL3yPq0.net] >>949 ちゃんとチェックするとこに行ったら全弾被弾して ○○さんって大したことないよねって評価をいただくわけですね
968 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 18:53:19.11 ID:u9WL3yPq0.net] スタイリッシュなつもりでいるようだけど自分の処理の状態も把握できないもん作って悦に浸ってるのがダセェ お前がよく見るのはあくまでサンプルだからな
969 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 20:10:07.63 ID:pmS2YoNl0.net] >>951 デッドロックやDB上のロックタイムアウトなら、普通はDBサーバ上で確認できるだろ まず何がエラーになったのかちゃんと確認すべきじゃね DB側で何の(接続要求すらの)感知もできてないなら、おれならまずはネットワーク系の問題を疑うがな ソケットの枯渇とか名前解決の不具合とかファイアウォール関係とか、その辺があやしい
970 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 20:26:14.86 ID:fYph1ArX0.net] >>951 ありがとうございます このGetStartProcessTimeが複数の箇所で同時に呼ばれる事はありません 教えて頂いた設定等は私の知識不足で全然触れたことがないので一度調べてみます >>954 ありがとうございます postgresのログも見てみましたが、タイムアウト発生時にはエラーや何らかの処理をしているログ自体ありませんでした データベースがEntityFrameworkから接続を要求されているというのは後からでも見ることが出来るのでしょうか?
971 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 21:45:24.55 ID:11RalhgJ0.net] >>954 >まず何がエラーになったのかちゃんと確認すべきじゃね そりゃそうよ ただ本当に詳細が確認できない状態で再現もできないのなら 次に発生した時に情報を取れるようにしておくのは重要 DB側のログで何が確認できるかは設定次第 https://www.postgresql.org/docs/current/runtime-config-logging.html
972 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 22:06:08.66 ID:u9WL3yPq0.net] そもそもタイムアウトが起きるぐらいの処理時間かかってるの?
973 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 22:25:24.63 ID:RReR8OJiM.net] >>952 c#のwindows環境でシングルコアで動くか?ってやってるところどこにあるんだよ 脳みそ何のために使ってんだ?
974 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 22:34:34.58 ID:11RalhgJ0.net] >>955 自PC内ってことだったからnpgsqlのtraceレベルのログも仕掛けといたら? NpgsqlLogManager.Provider = new ConsoleLoggingProvider(NpgsqlLogLevel.Trace, true, true); https://www.npgsql.org/doc/diagnostics/logging.html
975 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 22:47:06.84 ID:fYph1ArX0.net] >>957 各クエリの時間を測った事は無いのですが、アプリケーション自体の一連の処理が0.5〜0.7秒程度で終わっているので、今回のDBへの接続がタイムアウトになるほど長くかかる事は通常は無いと考えています… テンプレートにあったサイトを使ってエラーを記載してみました 上手く出来ているか分かりませんが、以下が現在確認出来ているエラー内容です https://ideone.com/rIerhm
976 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 22:48:14.55 ID:u9WL3yPq0.net] >>958 っていうかそういう自分の思い込みでしか物事を判断できないから バグまみれのスレッド立てても気にもならないんだろうな シングルコアで動かしたログがあればマルチコアで並列で動作してるか どうかチェックになんだろ 得にオメーのはどうせ並列でなんか動いてねぇからシングルでもマルチでもログかわんねーだろw
977 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 23:01:38.91 ID:RReR8OJiM.net] >>961 シングルコアが分からないなら口出ししなければいいのに
978 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 23:07:43.01 ID:RReR8OJiM.net] あなたの会社ではどのシングルコアCPUを搭載したwindowsPCでスレッドの動作確認を行っているんですか? そんなことしてる会社などないだろ
979 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 23:18:00.69 ID:NUxQNPK7a.net] 初代ラズパイ+monoかな 脳みそ何のために使ってんだ? ← 妄想
980 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 23:18:39.86 ID:QQmTWHSUM.net] >>963 わざわざ相手するなよ その人ろくに有益なこと言えないのにひたすらマウント取ろうと粘着するから 無駄にレス流れて迷惑なんだよ
981 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 02:29:49.81 ID:6+/OHix60.net] 脳みそはマルチコアでも容量が1bitしかないようだなハハハ
982 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 03:04:14.67 ID:w+huDBHz0.net] またシングルスレッドおじさん帰ってきたのか
983 名前:デフォルトの名無しさん [2022/02/09(水) 10:25:30.10 ID:FQOg5JO/0.net] Windowsフォームのプログラムをタブレットでも使いたいという要望があったのですが comboboxのスクロールバーを大きくすることはWindowsフォームで出来るでしょうか? というかタブレットかつ高解像度のPCが出てくると いよいよWindowsフォームがキツくなってきた気がします。
984 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 10:27:52.18 ID:tI59uOap0.net] >>968 プロパティでどうこうみたいなお手軽な方法は無くって、カスタムコントロールを作るとかしないとダメだった気がする
985 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 11:46:02.13 ID:kunTT2/DM.net] OwnerDrawは全てを解決します
986 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 13:55:19.52 ID:nVoy06Fa0.net] つーかAndroidタブのコンボボックスにスクロールバーなんかないよね 指で操作するためのUIに変える必要があるってことよね オーナードローなんかで解決するかな
987 名前:デフォルトの名無しさん [2022/02/09(水) 14:17:49.58 ID:P+Dycpf60.net] >指で操作するためのUIに変える必要があるってことよね フォームアプリがタッチパネルに反応するだけでも御の字と思っている状況なので、 出来るなら是非とも欲しい動作です。
988 名前:デフォルトの名無しさん [2022/02/09(水) 14:17:49.99 ID:P+Dycpf60.net] >指で操作するためのUIに変える必要があるってことよね フォームアプリがタッチパネルに反応するだけでも御の字と思っている状況なので、 出来るなら是非とも欲しい動作です。
989 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 14:19:08.14 ID:5WmGk4RQ0.net] スクロールバーを出ないぐらいコンボボックスの範囲を大きくしておけばいいのでは? オーナードローとかしだしたら大変だからやらない方が身のためかもしれない
990 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 14:35:48.89 ID:gJYxYm5Ia.net] コピペで一発とはいかないけどこれでできるな スクロールバー二重になったりちょっとおかしいとこ変えるだけだからすぐだろ https://www.codeproject.com/Questions/552065/Customizepluswindowsplusscrollplusbarplusinpluscom
991 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 15:24:21.38 ID:lp//LDU1a.net] WPFのコンボもフリックしてタップで止めるとかできないんだっけ? まあWPFの方が不十分とはいえ一応タッチパネル系のイベントに対応してるんで できるならWPFで作り直した方がいいんだろうねたぶん
992 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 16:41:51.90 ID:iS0fYVVpa.net] >>975 これできないな。メッセージ飛ばせば終わりだろと思ったけどまったくだった
993 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 21:31:08.51 ID:nVoy06Fa0.net] コンボボックスやめてパネルにでかいボタンを並べてスクロールさせるかリストボックスだな そうなるとやっぱオーナードローか
994 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 22:39:05.34 ID:HRI/vJyh0.net] .Net6.0にしようとしたらSJIS削られてて焦った
995 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 22:43:02.03 ID:1A90hyai0.net] >>979 まじかよ、俺社一生使えないじゃん・・・
996 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 23:04:40.19 ID:7kRrx8rI0.net] EXCEL用のCSV出力できなくなるの?
997 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 23:05:53.89 ID:a7Kiiaid0.net] >>980 次スレよろぴく
998 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 23:06:30.96 ID:gW34M8HF0.net] それは BOM を付けたげたら済む話じゃないの?
999 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 23:12:22.58 ID:iS0fYVVpa.net] CodePageEncodingProvider.Instance.GetEncoding("shift-jis") こんな感じで取得できたはず
1000 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 23:14:43.66 ID:1A90hyai0.net] >>982 はい次スレ ふらっと C#,C♯,C#(初心者用) Part154 https://mevius.5ch.net/test/read.cgi/tech/1644416019/
1001 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 23:25:51.66 ID:FxI6XKVTM.net] CP932とshift-jisは実は別物と2chブラウザを作ったときに理解した 大体20年近く前の話
1002 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 00:27:38.90 ID:WTxAQl/h0.net] >>981 UnicodeのTSVで出せばいい
1003 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 04:11:44.10 ID:Bfsj9FyQ0.net] 会社で新しくC++MFCからC#に移行しそうなのですが、結構違いますか?
1004 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 04:41:11.49 ID:8GgErYEHa.net] むしろ共通点はほぼないと思いますよ。 UIにWindows Formを使うならWin32の知識が無駄にはならない程度
1005 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 04:51:25.43 ID:nU5m13/Jd.net] >>988 MFCのDocument/View構造とWPFのMVVMは考え方がほんのちょっと似てるかも
1006 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 05:16:17.86 ID:Bfsj9FyQ0.net] ありがとうございます やっぱり違うところもそれなりにあるんですね 本格以降の前に勉強しないと…
1007 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 09:10:07.63 ID:0HR3aWgk0.net] フレームワークのバージョンに右往左往
1008 名前:デフォルトの名無しさん [2022/02/10(木) 18:20:37.30 ID:hh6EUNrwa.net] Javaと同じ人が作っただけあって Javaのが似てると思います
1009 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 19:31:29.55 ID:G6G2NR290.net] MFCとC#のWPFなら基本的にまるで別物だよなぁ WinFormsも別物だけど、C++よりはC#の方が簡単だと思うけど ラムダ式やらその辺の書き方に付いていけない奴は結構いるらしい staticおじさんにはC#は辛いかも知れないw
1010 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 19:33:58.19 ID:vwYTLp7Ia.net] JAVAじゃなくてDelphiでしょw JAVAやC++はむしろ反面教師として否定的継承をしてるのがC#
1011 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 19:37:23.72 ID:vwYTLp7Ia.net] MFCのカオスに耐えられた人がC#は理解できないとかないと思うよw ラムダ式なんてむしろC++やってた人には馴染みやすいでしょ
1012 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 19:57:50.08 ID:y+gM+mODa.net] mfcを初めて触ったときはなんて簡単にwindowsアプリが作れるんだって感動したものだけど、c#はそれより数十倍簡単だからな mfcとc#はまったく違うけど、mfcできるなら一瞬で使えるようになるよ
1013 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 21:50:11.16 ID:Wm6mdcT10.net] MFC今も現役なの?
1014 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 22:05:49.13 ID:WTxAQl/h0.net] 今のC++はラムダ式も型推論もあるもんね
1015 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 22:41:54.23 ID:VfTItntg0.net] 拡張子がcppってだけのC言語使い方だときついでしょ
1016 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 58日 23時間 48分 33秒
1017 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています