- 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
- 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 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|