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