ふらっと C#,C♯,C#(初心者用) Part153

レス数が900を超えています。1000を超えると表示できなくなるよ。
2021/12/13(月) 22:53:21.18ID:dhjmiKBp0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part152
http://mevius.5ch.net/test/read.cgi/tech/1629888256/
■関連スレ
C#, C♯, C#相談室 Part94
http://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
2022/01/24(月) 19:46:14.25ID:ph7NlGryd
小数のない世界なら厚みゼロで隙間がないんだろうけど、塗りつぶすならFillRectngleで明示しろってことかな。
2022/01/25(火) 22:02:24.84ID:AwkrZJuk0
独習C#やってるんだけど、これを一通りやれば基本は身に付くと思っていい?
2022/01/25(火) 22:03:27.85ID:3T3OgJ8A0
信じるしかないだろ。もう買ってしまったのだから。
2022/01/25(火) 22:23:59.29ID:bPaq+vdr0
>>807
その本なら自信持って良いよ。
record, using var, initなどのC#8以降の機能は別途学習が必要。
LINQや正規表現などは実践でないとなかなか身につかないので、だいたい理解したらどんどん読み進めるのがおすすめ。
ちなみにプログラミング未経験で、全部読むのに3ヶ月かかりました。
2022/01/26(水) 00:57:13.82ID:TS8Lm52TM
自分だったら3か月かかるならモチベーションが保てそうにないなw
20年前はそんな本がなく手探りだったけど逆に良かったのかな…
2022/01/26(水) 01:14:23.92ID:TS8Lm52TM
仕様もライブラリも今よりペラペラだったから入門しやすかった
2022/01/26(水) 01:55:09.45ID:4qIztPSU0
>>809
ありがとう
プログラミング経験はエクセルVBAのみ
C#は簡単な方だと聞いてたけど難しいね、頑張ります
2022/01/26(水) 12:37:45.33ID:IaxANYMEd
やっつけ仕事するだけなら今も昔も変わらんと思う

C#の便利機能が山ほど増えてて書きやすくはなってるけどどこまでが入門なのかは正直わからん
2022/01/26(水) 13:20:24.56ID:S6jLK41vM
Recordとかぜってえ使わねえ
2022/01/26(水) 13:32:46.48ID:MBxJE5i40
ともーじゃん?
・・・まあ使わなくても済むよなあ
2022/01/26(水) 13:50:18.74ID:wOQPCoOZM
DTOだらけの低品質なコードが量産されてTypeScriptみたいになりそうな気はしてる
2022/01/26(水) 14:28:40.80ID:pfxZ0tMsd
おれも独習で勉強した
分厚いから真ん中ぐらいまでくると最初の方忘れてるわ
んでもう一度戻ってやり直したり、途中で挫折したりで
1年以上うだうだ読んでた

読み終わる前にいろいろ作って遊んでたけど
イベントとか非同期処理とか分からないとまともなの作れないんで
途中すっ飛ばしてその辺読んだり
2022/01/26(水) 19:22:56.75ID:uxP3YVvMH
>>817
その独習、旧版(ハーバード・シルト)?
2022/01/26(水) 19:59:28.45ID:zF2HduXmM
シルトは過去の人
昔読んだ時もそういうイメージ

文法ぐらいが得意分野
2022/01/26(水) 21:16:01.91ID:uxP3YVvMH
>>819
では最近の教科書で優れたものは、どなたの著作ですか?
2022/01/27(木) 00:27:57.09ID:XnQeNwtl0
俺はオライリーの薄いやつで大体把握して、デザパタをjavaの結城さんのやつで学んだな
2022/01/27(木) 10:26:45.87ID:i4V+v3ft0
C++の本で勉強した知識だけでC#の本は買わず、dobonを見ながら書いてる
2022/01/28(金) 00:37:45.37ID:UrWQ/KNN0
dobonよく参考にしてるけどもしかして見てるとバカにされる風潮とかあるの?
2022/01/28(金) 00:43:53.93ID:OmkEpZCo0
昔はよくお世話になったけど、今となっては古い記事が多いので最近はあまり見ないな
825デフォルトの名無しさん (ワッチョイ c55f-dxHz)
垢版 |
2022/01/28(金) 05:13:54.08ID:AmULl7RP0
全ページのヘッダに古い言語仕様の内容であることの明示くらいはしてほしい
あと初心者向けと言いながら
同じ処理でベストプラクティスと非推奨な書き方を同列に載せてるのも印象よくない
2022/01/28(金) 08:13:42.95ID:MUNMfoCeM
recordはvalueobject作るのに便利
使い捨てのアプリ作るのには不要
2022/01/28(金) 12:18:41.61ID:g6bFcMDaM
で、あるか
2022/01/28(金) 14:24:04.65ID:C+lFkEfx0
お世話になります。
ComboBox.IsReadOnly を使おうとしてエラー(usingまたはアセンブリが不足)が出ました。
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.controls.combobox?view=windowsdesktop-6.0
で調べ、
名前空間:System.Windows.Controls
アセンブリ:PresentationFramework.dll
を追加しました。
しかし、現時点でエラーに変化がなく困っています。他に考えられる原因があればお教えてください。
829デフォルトの名無しさん (ワッチョイ 11e5-KfKj)
垢版 |
2022/01/28(金) 14:32:54.24ID:QwC8uFzi0
「他」とか言われてもお前以外にゃわからんのよ
2022/01/28(金) 14:38:21.72ID:S6VsJW6p0
>>828
追加したのはWPF用のアセンブリだけどお前が作ってんのはWPFじゃなくてWinFormsだとか
2022/01/28(金) 15:20:17.24ID:D0DTDHxMd
ComboBoxのインスタンス作らずにプロパティ見ようとしてるとか?

プロジェクトのエラー起こしてるコードさえないからわからん
2022/01/28(金) 15:31:53.40ID:C+lFkEfx0
>>829>>830
反応ありがとうございます。
はい。WinForms(VisualStudio使用)です。
ソリューションエクスプローラーの参照からアセンブリを探して追加しました。
WPF用ではなかったか確認します。
using System.Windows.Controls と書いて追加した気になっていましたが、
ソリューションエクスプローラーに同名がないのを確認しました。これが原因かもしれないので調べてみます。

>>831
盲点でした。確かにインスタンス化していません。やってみます。

みなさんのアドバイスのおかげで糸口が見えました。あとは自力で頑張ってみます。
また困ったことがあればよろしくお願いします。
2022/01/28(金) 15:36:53.16ID:bcAzYVuU0
>>832
横からレスだけど、次からは情報を端折らずに書いてね
場合によるから
2022/01/28(金) 15:38:40.89ID:bcAzYVuU0
>>832 833の追記
WinFormsのComboBoxはSystem.Windows.Formsの方だったはず
2022/01/28(金) 15:51:48.62ID:C+lFkEfx0
>>832
反応ありがとうございます(横レスでも大歓迎です)
情報を端折ってしまったようで今後気を付けます。
必要になる正しい情報とはこちらでよろしいですか?

エラー CS1061 'ComboBox' に 'IsReadOnly' の定義が含まれておらず、型 'ComboBox' の最初の引数を受け付けるアクセス可能な拡張メソッド 'IsReadOnly' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足していないことを確認してください

それとも部分的であってもソースでしょうか?今回の問題では必要ないと判断してしまいましたが、次回以降気を付けます。
次回もぜひお願いします。ありがとうございました。
2022/01/28(金) 16:04:30.29ID:AFiLYmq20
単に、WinFormsのComboBoxにはIsReadOnlyプロパティが存在しないだけだな

https://atmarkit.itmedia.co.jp/ait/articles/0711/01/news152.html
2022/01/28(金) 16:32:10.58ID:bcAzYVuU0
>>835

エラーメッセージもそうだけど、こっちが言ってたのは「WinFormsかWPFか」の方だね
WinFormsの方のComboBoxにはDropDownStyleプロパティがあるからこれにComboBoxStyle.DropDownListを渡せば選択可能で文字列入力を受け付けないタイプになるよ
(まあ、他の人がすでに提示しているようだけど)
2022/01/28(金) 16:34:15.50ID:ycXEhqEs0
もしかして Enabled
2022/01/28(金) 17:05:47.31ID:C+lFkEfx0
みなさん親切で涙が出てきます。
>>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行出てきてしまうのがかっこ悪いかなと考えて最善を探していました)

なんとか頑張ってみます。みなさんありがとうございました。
2022/01/28(金) 17:14:46.64ID:AFiLYmq20
>>839
System.Windows.Forms.ComboBoxを継承してカスタムコントロールを作るってのが調べると出てくると思うよ
例えばこんなのとか
http://jeanne.wankuma.com/library/readonlycombobox/
2022/01/28(金) 17:20:12.41ID:OmkEpZCo0
>>839
839のリンク先もそうだけど、記事にXAMLって単語があったらWinFormsと無関係だと思って良いよ
WinFormsのコンボボックスの操作不能にするのは、comboBox.Enabled = false;
2022/01/28(金) 19:13:46.87ID:l6dMzLky0
c# + visual studioでデータブレークポイント使えますか?
c#のクラスは参照型ですが、値のコピー
(int型変数i,jだと、i = jに相当する処理)
するにはどのようにすればよいのでしょうか?
2022/01/28(金) 19:27:11.67ID:LzvJDC40a
ブレークポイントの上で右クリ→条件
2022/01/28(金) 20:10:31.96ID:LzvJDC40a
コピーはコピー先をnewして作って、メンバー変数の値をそこに一個ずつコピーしてく
クラスによってはそういうnewとコピーをしてくれるClone()を持ってることもある
2022/01/29(土) 16:47:47.80ID:3whatsSd0
独習C#で学習されている方が多そうですがマルチスレッド難しすぎないですか(泣)
新版を使っておりますが、P530〜の説明が意味不明です
awaitとWait()メソッドの違いがよくわかりません
どちらもタスク(サブスレッド)の処理を待機するという同じような意味という理解ですが、
なぜかサンプルプログラムで両方使われています
試しに片方削除して実行すると、ループが最後まで実行されないので、意味が違うんでしょうが調べてもよくわかりません…
どなたかご教示いただけないでしょうか
2022/01/29(土) 17:25:22.69ID:xNgrtKWR0
>>845
大別するならawaitは非同期、Task.Wait()は同期的、という所だけど
Task.Wait()は単純にその場でタスクの終了を待つので足踏みする事になる
awaitを使うと内部的にはその後のコードもTask化されてasyncメソッドの返り値になる

awaitまで到達した時点で呼び出し元に処理が戻るので、主にUIスレッド等でよく使われる
後続処理を追加するだけならTask.ContinueWith()も有るんだけど
UIコンポーネントは作成スレッドからしかアクセスしてはならない制約とか
後続処理を担うスケジューラ指定とか煩雑なのを纏めて糖衣構文にしたのがawait
2022/01/29(土) 18:18:28.62ID:5CdUE0YMa
>>845
助手(他のスレッド)がタマネギを炒め終わるのをジャガイモの皮を剥きながら待つのがawait
手を止めてじっと待つのがWait

awaitが画期的なのは、「助手の仕事が完了するまでは別の仕事をしつつ、完了後に
やりかけの仕事の続きをする」という本来シーケンシャルでない手続きを、あたかも
「助手の仕事が完了したら続きをやる」という単純なシーケンスであるかのように記述できること
2022/01/29(土) 18:22:38.33ID:p/SD7W260
async汚染に注意な
2022/01/29(土) 18:50:59.09ID:wjo4lb340
awaitの正体は「Taskがすぐに終わらなかったらすぐにreturnする特殊構文」ってことを知っておけば理解はしやすいと思う
Taskが終わったらさっきawaitしたところから(途中処理を飛ばして)再開する

関数先頭に特殊構文を使うことを明記(async)しなきゃいけない

(FormとかWPFとかのGUIアプリなら裏で勝手にやってくれるから気にしなくていいが)
Taskが終わった後にawaitから再開できるように呼び出し元のスレッドでDispatcher.Run()しとかなきゃいけない
2022/01/29(土) 19:19:00.14ID:7kxnQq4mr
awaitは「あ!まって!」って覚えればいい
2022/01/29(土) 19:28:39.37ID:RKF0PElVM
await 〇〇やっといてよろしく。私いったん席外すんで終わったら連絡ちょうだい。続きこっちで引き継ぐから

Wait 〇〇やれや!終わるまで後ろでじっと見とるからな!はよせえよ!

どっちがいい?
2022/01/29(土) 19:41:45.39ID:S+vKlyc9a
Threadが一番わかりやすいw
2022/01/29(土) 20:51:42.02ID:kkw3q4n30
たとえが分かりやすいですw
イメージがわきました、みなさんありがとうございます!
もう一点だけ確認なのですが、asyncメソッドのawaitよりあとのプログラムに移るタイミングですが、
メインスレッドでプログラムが実行中のときはどちらが優先になるのでしょうか?
2022/01/29(土) 20:57:28.48ID:z01vGxpA0
>>853
OSの気分次第
2022/01/29(土) 21:26:41.18ID:qmqxr6WH0
WinFormという前提でいうと
まず前提としてメインスレッドではずっとメッセージループっていうループが回ってる
でマウスの入力とか再描画要求はメッセージって形でキューに貯められる
メッセージループはキューから1つメッセージを取り出してはアプリの実装に流してくる
ちなみにその辺のシステムメッセージはWinFormだとMouseMoveとかPaintとかのイベントとしてアプリが対応することになる

await以降の処理もこのメッセージを使って実現してるから
メインスレッドの手が空いて次のメッセージを処理できる態勢になるまで待たされる
2022/01/29(土) 22:02:51.88ID:p/SD7W260
スレッド
注意点一覧

・シングルコアで動くか?
・応答がないときに自決するか?
・失敗時のメモリリークはないか?
・タイムスケジュールはあるか?(例:1分の内AスレッドはX秒、BスレッドはY秒等)
・生存確認方法はあるか?
・実行中の状態は取得できるか?
・ログは出力できるか?
・最大使用メモリは把握できているか?
・失敗時のリザルトの受け取り方法は適切か?
・処理が複数失敗する可能性は考慮できているか?(例:ファイルオープン成功→ファイル書き込み失敗→ファイルクローズ失敗→tempフォルダ削除成功のとき何が返る?)
・本体終了時に終了できるか?
2022/01/29(土) 23:49:44.87ID:kkw3q4n30
ありがとうございました!
2022/01/30(日) 01:12:48.99ID:XLpABEj80
C#のマルチコアなんたらっていう非同期処理のテキスト読んだらいいよ
859デフォルトの名無しさん (アウアウウー Sa21-xC/n)
垢版 |
2022/01/30(日) 03:05:22.41ID:2zm6GvSaa
async/awaitとTask.Runの使い分けが今でもよくわからん。。
2022/01/30(日) 09:00:16.50ID:F79hzdqmr
>>856
それどこかに書いてあったな
5年くらい前の記憶でそのリストがあった
2022/01/30(日) 11:27:59.00ID:zEfMsuv9M
それ多分C#じゃなくて組み込みとかの話だから参考にならんよ
2022/01/30(日) 14:20:38.52ID:6d5Lec+00
>>861
え?どこにC#だと助かる要素があるの?
2022/01/30(日) 15:48:10.14ID:WELts56MM
>>856
この記事の内容が組み込みc++じゃないのかと
2022/01/30(日) 17:06:41.10ID:6d5Lec+00
C++だと駄目でC#だと助かる要素なんて1つもないけど
今まで何やってたん?
2022/01/30(日) 17:17:33.02ID:nTSKdiu90
>>856
これスレッドに限らずどのプログラムにも言えることだと思うわ
出典元知りたい
2022/01/30(日) 17:18:42.01ID:v/uLxU6j0
>>859
Task.Runとawaitは組み合わせて使うものだし、使い分けって何のことだろうか
(同期する必要が無ければawaitしないことはある)
2022/01/30(日) 17:21:16.29ID:cT0our3Wa
助かるってどっかの方言なのかな。まったく意味わからなかったw
ほぼすべてがc#(とVSの組み合わせ)で助かるか、マルチスレッド関係なくそのぐらい考えとけって項目
2022/01/30(日) 17:29:29.52ID:6d5Lec+00
>>867
は?c#に特別なギミックなんてないが
君はスレッド使わないほうがいいね
2022/01/30(日) 19:59:30.72ID:XMZDBma3d
またシングルスレッドおじさんの講釈が始まったのか
2022/01/30(日) 20:10:42.59ID:Mi/4eGx6M
awaitのおかげで非同期書きまくる現代のプログラミングでこんなチェックリストいちいち考えてたら工数足りん
それに現代の実行環境は優秀なんでほとんど考えなくていいよう出来てる
C#もJavaScriptもそう
C++とはもう時代が違う

・シングルコアで動くか?→普通に書けば当たり前に動く
・応答がないときに自決するか?→普通に書けばライブラリ側からタイムアウト例外出て落ちる
・失敗時のメモリリークはないか?→普通に書けばあり得ない
・タイムスケジュールはあるか?(例:1分の内AスレッドはX秒、BスレッドはY秒等)→大半のケースで環境に任せるのが正解。制御したいならより上のプロセスレベルで制御する
・生存確認方法はあるか?→死んだら例外でる出てないなら生きてる
・実行中の状態は取得できるか?→大半のケースで取得要件はない
・ログは出力できるか?→出来ないことなんてあるの?
・最大使用メモリは把握できているか?→環境に任せるのが正解。したいならより上のプロセスレベルで制御する
・失敗時のリザルトの受け取り方法は適切か?→例外で標準化されてる
・処理が複数失敗する可能性は考慮できているか?(例:ファイルオープン成功→ファイル書き込み失敗→ファイルクローズ失敗→tempフォルダ削除成功のとき何が返る?)→例外出たら止めろ。例外出ても進めるならしっかり設計しろ。そしてそれは非同期関係ない
・本体終了時に終了できるか?→普通に書けば猶予期間内に終了する。ロングランニングの時だけ気をつけろ
2022/01/30(日) 20:27:29.51ID:MKtsah/wM
各アプリケーションの機能テストで確認すべき項目と
非機能要求のテストで確認すべき項目と
フレームワークの仕様テストで確認すべき項目と
全部ごちゃ混ぜだから分かりにくい

タイムアウトを含め失敗時の振る舞いは一般的な品質レベルなら全部テストする項目
2022/01/30(日) 20:32:44.54ID:cT0our3Wa
組み込みになるとシングルコアで動くのにマルチコアで動かないとか、通信ライブラリが処理をつかんだままだとほかのスレッドが止まるとか(それマルチスレッドなのか?でも本当に起きる)
そんな感じになっていくからな。特にFreeRTOSは・・・

c#だとlockとかを知らないと色々トラブル。そっちの方が重要だろ
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/statements/lock
2022/01/30(日) 22:57:40.72ID:aiFnFmm30
doxygenって何処のスレで質問すれば良いですか?
2022/01/30(日) 23:50:15.42ID:cT0our3Wa
スレ立てるまでもない質問はここで 158匹目
https://mevius.5ch.net/test/read.cgi/tech/1635193843/
2022/01/31(月) 00:03:34.26ID:HAfOA5uC0
>>870
。oO(ああ、こいつダメだ、経験が少なすぎてなんも当たったことねぇのなw)
2022/01/31(月) 01:18:01.43ID:rap/w09T0
GUIアプリ作るのにシングルスレッド縛りはありえねーって
2022/01/31(月) 01:20:52.56ID:PXu70Z+W0
(応答なし)
2022/01/31(月) 01:30:02.02ID:HAfOA5uC0
>>876
うまく行かなかったんだろ?w
2022/01/31(月) 02:43:38.51ID:rap/w09T0
>>878
GUIアプリでシングルスレッド縛りだと重い処理で画面固まってるように見えてしまうからうまく行かないね
2022/01/31(月) 08:09:11.84ID:RgoQRIUnM
>>870のどこがダメなのか分からない
スレッド制御を自前で1から書かなきゃいけなかった00年代ならともかく
async/awaitにほぼすべてを任せられて非同期を安全お手軽に書けるようになってる時代なのにさあ

脳みその中もPentium4あたりで進化が止まった老害が
async/awaitを当たり前に使う現在のコーディングスタイルについていけなくて
誰彼かまわずケチをつけてるだけにしか見えない

年取ってこういうゴミみたいなジジイにはなりたくないもんだ
2022/01/31(月) 09:50:16.85ID:JauXjIS80
何がしたいかによる
await/asyncを使うのは主に外部要因で待たされる時
ダウンロード残り1GBとかSQLサーバーからレスポンスが2秒以上かかってるとか
そういう感じの時クルクル回したりプログレスバーとキャンセルボタンが欲しいわけ
ボタンすら反応しませんだと、クソ重いソフトと因縁つけられちゃうの
一方マルチスレッドでCPU100%がん回しですってのがしたいことだったら
Partitioner.CreateとParallel.ForEachを使うawait/asyncは関係ない
2022/01/31(月) 10:15:13.28ID:FSK5xZBqM
大半のケースで考慮不要

この一言でまあそうだよねと納得できないなら開発経験不足としか言えん
2022/01/31(月) 10:47:47.62ID:F4OTxaxpa
もともとがc#に合わせた話じゃないからどうとでも読み取れちゃうんだよ
分かりやすいとこで言えば例えば
> ログは出力できるか?→出来ないことなんてあるの?

プログラミングの話をしてるのだからきちんと意図通りに動くことを把握するためのDebug.WriteLineのようなログと捉えたらできないことなんてあるの?となる
でもログファイル出力と捉えたら、マルチスレッドから同じファイルに対して書き込もうとして・・・なんてできないこともある
2022/01/31(月) 11:33:05.16ID:I+ECkei6M
そんなのはloggerがなんとかしてくれるから気にするな
つか今時はログは全部標準出力でいい
標準出力を拾って何処に吐くかは環境が担当するところ
2022/01/31(月) 11:38:53.86ID:BNlzdeLSM
>>883
> でもログファイル出力と捉えたら、マルチスレッドから同じファイルに対して書き込もうとして・・・なんてできないこともある
キューに書くなりして排他制御するだけじゃね?
2022/01/31(月) 12:08:05.50ID:F4OTxaxpa
そうなんだよ
だからログ取るならこのクラス使え(c#が勝手にスレッドセーフにしてくれたり管理するよ)
マルチスレッドからファイル操作するならlockで排他制御しろ(自分でスレッドセーフにしないとトラブルぞ)
ってチェックシートならいいんだけどな
2022/01/31(月) 12:13:17.55ID:a9TU5xJTa
オラオラ交通整理マン仕事しろや早く議論スレに誘導しろよ
まさか交通整理マン自身が議論してるんじゃねえだろうな?ん?

まあ、個人的には議論は結構だけど論点は明確にして欲しいね。
正直何を争ってるのかさっぱり分からんw
こんなあいまいな話で藁人形と戦ってる奴って普段よっぽど邪険にされてるのかねwww
2022/01/31(月) 12:53:42.98ID:80+F6Vz/M
かわいそうに
2022/01/31(月) 13:04:34.28ID:dnOSCP4XM
>>886
> マルチスレッドからファイル操作するならlockで排他制御しろ(自分でスレッドセーフにしないとトラブルぞ)
スレッドセーフならいいって話じゃないことぐらいは理解してから議論に参加しようよ…
2022/01/31(月) 15:26:32.90ID:2TQISd5L0
あ、これ議論なの?
2022/01/31(月) 19:09:11.37ID:yyWr14dta
凄まじく複雑な相談なんだけど良い?

インスタンスと対になる鍵オブジェクトって
xxxIdかxxxKeyかxxxTokenのどれで名付けるべき?

ちなみに中には格納番号が入っててリポジトリからインスタンスを引き出すのに使う
2022/01/31(月) 21:03:11.17ID:eqy2NGbAd
初心者スレだぞ

簡単な使い方ならともかく
なんか動かんだのデータ壊れただのデッドロックしただのの対策を一気に詰め込んでも無理でしょ
2022/01/31(月) 21:27:15.36ID:a9TU5xJTa
>>891
そもそも専用クラスにする必要あるの?
っていうかこの板命名スレもあるよ
いや目くじら立てて行くべきと言いたいわけじゃないw
2022/02/01(火) 11:07:54.02ID:Z6xO941E0
IDを使うときは配列でインデクサがある、とか
Keyを使うときは辞書でKey-Valueの対がある、とか
Tokenを使うときは重複しない文字列(大抵はハッシュ)が入ってる、とか
そういう話なのかな、C#とどう関係するのか知らんけど
2022/02/01(火) 11:19:59.86ID:Tjw+V3tAM
普通にハンドルパターンじゃないのか
2022/02/01(火) 12:10:52.81ID:LUb4jo/Ua
object xxxと対になる鍵オブジェクト = new object();
897デフォルトの名無しさん (ワッチョイ 4954-l0pG)
垢版 |
2022/02/01(火) 13:48:07.91ID:1d/yMvRJ0
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);
}
2022/02/01(火) 18:19:16.26ID:R62wNw5Va
https://docs.microsoft.com/ja-jp/dotnet/desktop/winforms/advanced/how-to-obtain-font-metrics?view=netframeworkdesktop-4.8
2022/02/01(火) 18:21:14.03ID:I6aD7b89a
TextBoxの高さに合わせてFormの高さを調整したいだけなのに
textBox1.Height = でテキストボックスの高さまで変更してるからでは?
2022/02/01(火) 19:55:39.20ID:x6m1XFOP0
>>897
一回目の呼び出しで
フォントの高さに合わせてtextBox1.Heightを設定する(小さくなる)
textBox1.Heightの高さに合わせてフォントの高さが変わる(小さくなる)

二回目の呼び出しで
フォントの高さに合わせてtextBox1.Heightを設定する(小さくなる)
textBox1.Heightの高さに合わせてフォントの高さが変わる(小さくなる)

というループだからでわ?
少なくともtextBox1.HeightはtextBox1.Font.Height より少し大きいはずだから
そのまま代入していくとどんどん小さくなるんだと思うわ
2022/02/02(水) 00:39:48.73ID:TKyxc9mCa
>>897
これで出来た
でも何か気付いてない問題がありそうw
private void textBox1_TextChanged(object sender, EventArgs e)
{
  var delta = textBox1.PreferredSize.Height - textBox1.Height;
  Height += delta;
  textBox1.Height += delta;
}
2022/02/02(水) 01:06:16.73ID:Xe1+J6sR0
TextChangedのイベントごとにHeight+=deltaの設計自体良くないとは思う

イベントごとにテキスト内容からHeightの再計算させるなら理解できるが
2022/02/02(水) 01:14:48.57ID:TKyxc9mCa
>>902
言いたいことは分からないでもないが、
恐らくセッター自身にプロパティーの値に変更がなければ何もせず戻る処理が
入っているはずなので考えすぎ。

実際問題動かしてみてそれに起因する問題があるようには見えない
904デフォルトの名無しさん (ワッチョイ 1e82-21ac)
垢版 |
2022/02/02(水) 09:11:06.71ID:RlffTed50
WinFormsのListViewで、仮想モード、LargeIcon表示にしたとき
Shift+マウスクリックでの項目の範囲選択がクリック位置より広く選択されてしまいます。

以下は2008年の古い情報ですがWindowsXPの不具合のため回避困難とあります。
https://social.msdn.microsoft.com/Forums/ja-JP/484c578a-df46-4624-a4e7-99ceaa0588ef/2020624819212701237512383listview12391389173044612398350792596836?forum=vsgeneralja

Windows10でも解消していないようなのですが、
検索しても有用な情報が見つからずどなたか回避できてる方いないでしょうか。
905デフォルトの名無しさん (ワッチョイ 5e66-vYAo)
垢版 |
2022/02/02(水) 09:12:35.95ID:4XyzPXmZ0
スクリーンロックを抑止したくてネットで調べて下のようなプログラムを書きました。

static async void Test(){
for(;;){
SendKeys.Send("Break");
await Task.Delay(10000);
}
}

目的は達成したのですが、Test()メソッドを終了するにはどう書けば良いでしょうか?
よろしくお願いします。
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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