[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/22 04:32 / Filesize : 279 KB / Number-of Response : 1018
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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

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にしてしておくといいかも






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<279KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef