「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
探検
ふらっと C#,C♯,C#(初心者用) Part141
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/12/15(土) 10:46:07.45ID:Wu4Fx0bU252デフォルトの名無しさん
2019/11/25(月) 17:49:11.57ID:3yP/a9XY >>251
すいません。
250はかなり要約して書いていて、本当はかなり長いコードでここには載せ難く。
10回に9回は1秒程度でループを抜け終了するので、
しばらく待ってれば表示されるかと思うと、やがてOSから応答してないよとメッセージがきます。
cならリソース開放忘れを疑うのですが、c#ってそのへん自動で管理してくれるんですよね。
すいません。
250はかなり要約して書いていて、本当はかなり長いコードでここには載せ難く。
10回に9回は1秒程度でループを抜け終了するので、
しばらく待ってれば表示されるかと思うと、やがてOSから応答してないよとメッセージがきます。
cならリソース開放忘れを疑うのですが、c#ってそのへん自動で管理してくれるんですよね。
253デフォルトの名無しさん
2019/11/25(月) 17:54:12.64ID:pjJuONFZ 自分のバグを言語やOSのせいにする香具師は何をやっても大成しない
254デフォルトの名無しさん
2019/11/25(月) 18:05:07.13ID:b/ZUvETz ウィンドウプロシージャから呼び出された時に時間のかかる処理をすると
基本的にマウス入力も含めた後続のウィンドウメッセージが処理できないので
結果的に操作などが受け付けなくなりフリーズしたようになる
(5秒だかウィンドウプロシージャから戻ってこないとOSが駄目だコイツと判断してよく見る「応答なし」になる)
レンダリング以外の部分で一秒もかかる可能性があるならその時点で別スレッドにすべきではある
フリーズに規則性がないのはそれこそロジック見てみないと誰にもわからんでしょ
様子からしてGCが暴れてる可能性はあるので値型使ってみたりとかの余地はあるだろうけど
基本的にマウス入力も含めた後続のウィンドウメッセージが処理できないので
結果的に操作などが受け付けなくなりフリーズしたようになる
(5秒だかウィンドウプロシージャから戻ってこないとOSが駄目だコイツと判断してよく見る「応答なし」になる)
レンダリング以外の部分で一秒もかかる可能性があるならその時点で別スレッドにすべきではある
フリーズに規則性がないのはそれこそロジック見てみないと誰にもわからんでしょ
様子からしてGCが暴れてる可能性はあるので値型使ってみたりとかの余地はあるだろうけど
255デフォルトの名無しさん
2019/11/25(月) 19:04:16.55ID:qlQ2yr7c 魔法の言葉、Application.DoEvents();
ループ処理の中に書くといいよ
ループ処理の中に書くといいよ
256デフォルトの名無しさん
2019/11/25(月) 19:27:30.58ID:0ThvbZYY >>252
全体的に何を言ってるのかよく分からないんで推測だけど、
UIがフリーズするのはUIスレッド上のユーザーコードがビジーループになってるから。
ウィンドウやコントロールの再描画やマウスやキーイベントへの反応は
システム側のコードで処理されるわけだけど、それはUIスレッドで動く。
だからUIスレッド上のユーザーコードがビジーのままだと、
システムは側のコードも動けずにフリーズしたように見える
全体的に何を言ってるのかよく分からないんで推測だけど、
UIがフリーズするのはUIスレッド上のユーザーコードがビジーループになってるから。
ウィンドウやコントロールの再描画やマウスやキーイベントへの反応は
システム側のコードで処理されるわけだけど、それはUIスレッドで動く。
だからUIスレッド上のユーザーコードがビジーのままだと、
システムは側のコードも動けずにフリーズしたように見える
257デフォルトの名無しさん
2019/11/25(月) 19:36:27.15ID:qmWi7Xp+ フリーズするのはスレッドを分離してないのが原因だけど
それ以前に何らかの条件で無限ループになっている可能性もあるな
それ以前に何らかの条件で無限ループになっている可能性もあるな
258デフォルトの名無しさん
2019/11/26(火) 03:03:00.47ID:oYeHIm2x >>250
まずそういうのは実際には円を描かないで演算だけやってみるところからはじめませう。演算が悪いのか描画が悪いのか切り分けたい。
まずそういうのは実際には円を描かないで演算だけやってみるところからはじめませう。演算が悪いのか描画が悪いのか切り分けたい。
259デフォルトの名無しさん
2019/11/26(火) 10:03:15.82ID:c3SEnPpX260デフォルトの名無しさん
2019/11/26(火) 10:19:16.34ID:SOHA2nuS みなさんいろいろありがとうございます。
円の数とフリーズ確率に比例関係があるので、
ループでの処理が問題だと思います。
別スレッドにしてみようと思います。
それまで
Application.DoEvents();
活用してみます。
円の数とフリーズ確率に比例関係があるので、
ループでの処理が問題だと思います。
別スレッドにしてみようと思います。
それまで
Application.DoEvents();
活用してみます。
261デフォルトの名無しさん
2019/11/26(火) 14:22:57.27ID:dAEqoOXB メモリ不足無視して実行し続けてるのも暴走って言うかもな
262デフォルトの名無しさん
2019/11/26(火) 19:13:59.32ID:MuEAwLxr263デフォルトの名無しさん
2019/11/27(水) 12:24:02.31ID:KtqS+hCI 1に戻る前に強制GCした方が良くね
264デフォルトの名無しさん
2019/11/30(土) 13:57:48.46ID:xRFcAUWE 2の終了判定が甘くて無限ループしてるだけだろ
265デフォルトの名無しさん
2019/12/01(日) 12:57:13.04ID:i2YaNYYV >>255
魔法の言葉、Application.DoEvents();
で解決しました。
やはりWhile分で条件達成まで延々ループ処理させてたのが問題だったようです。
フリーズすると制作したアプリで取得したデータ大丈夫なの?
って冷たい目にさらされていたのですが、これですっきりしました。
ありがとうございました。
魔法の言葉、Application.DoEvents();
で解決しました。
やはりWhile分で条件達成まで延々ループ処理させてたのが問題だったようです。
フリーズすると制作したアプリで取得したデータ大丈夫なの?
って冷たい目にさらされていたのですが、これですっきりしました。
ありがとうございました。
266デフォルトの名無しさん
2019/12/11(水) 19:12:23.65ID:t3xhIlyZ ASP.NET MVCを初めて勉強しています
MVの場合、ボタンクリックのイベント処理はどう書くのがスタンダードなのでしょうか?
(Webフォームではイベントハンドラーを使ってましたが。)
MVの場合、ボタンクリックのイベント処理はどう書くのがスタンダードなのでしょうか?
(Webフォームではイベントハンドラーを使ってましたが。)
267デフォルトの名無しさん
2019/12/11(水) 19:20:12.37ID:qXq3MGtY form
268デフォルトの名無しさん
2019/12/11(水) 21:27:46.75ID:H3x5MOt+269デフォルトの名無しさん
2020/01/01(水) 12:48:02.27ID:7beskV3u 自分で作ったアプリ14個くらいショートカットで起動できるようにしていて、
その中の名前が似た3つが弄ってもいないのにある日突然起動しなくなったのですがどういったことが考えられるでしょうか
その中の名前が似た3つが弄ってもいないのにある日突然起動しなくなったのですがどういったことが考えられるでしょうか
270デフォルトの名無しさん
2020/01/01(水) 12:53:24.15ID:2+A6XpAV 何かを弄ったから
271デフォルトの名無しさん
2020/01/01(水) 13:19:14.52ID:ZjrgaAUK 妖精さんの悪戯じゃないかな
272デフォルトの名無しさん
2020/01/01(水) 13:26:47.06ID:tqBP4ADq 大きくならない
固くならない
固くならない
273デフォルトの名無しさん
2020/01/01(水) 13:51:29.41ID:dLiykUmV274デフォルトの名無しさん
2020/01/01(水) 15:47:55.57ID:V7aDVAm9 とりあえずイベントログを見てなんかエラーが出てないか確認
275デフォルトの名無しさん
2020/01/02(木) 09:17:19.87ID:OoAxt65V テキストファイルを開いて書き換える動作が、
昨日まで普通にできていたのが今日やってみたら読み込みは出来るものの、書き込み時に
UnauthorizedAccessException:パスへのアクセスは拒否されました。
の例外が出て書き換えできなくなったのですがなぜでしょうか
昨日まで普通にできていたのが今日やってみたら読み込みは出来るものの、書き込み時に
UnauthorizedAccessException:パスへのアクセスは拒否されました。
の例外が出て書き換えできなくなったのですがなぜでしょうか
276デフォルトの名無しさん
2020/01/02(木) 09:36:21.31ID:4gUBqapQ そのファイルのアクセス権を剥奪されたのでしょう
277デフォルトの名無しさん
2020/01/02(木) 10:23:46.38ID:OoAxt65V278デフォルトの名無しさん
2020/01/02(木) 10:24:50.25ID:ZgXvL7GY279デフォルトの名無しさん
2020/01/02(木) 10:26:25.06ID:ZgXvL7GY280デフォルトの名無しさん
2020/01/02(木) 10:47:12.88ID:OoAxt65V ありがとうございます
WindowsDeffenderを切ってみたら書き込みが出来ました
セキュリティが悪く効いてた感じでしょうか
WindowsDeffenderを切ってみたら書き込みが出来ました
セキュリティが悪く効いてた感じでしょうか
281デフォルトの名無しさん
2020/01/04(土) 15:40:54.17ID:wppxYzrl DropDown式メニューの幅を指定したいのですが、ToolStripMenuItemだと、
幅を指定しても無視されてしまいます。
ToolStripButtonであれば反映されるのですが、ToolStripMenuItemでも指定する方法を教えてください。
//指定しても無視される(文字に合わせた幅になってしまう)
var item = new ToolStripMenuItem("テスト");
item.AutoSize = false;
item.Width = 100;
this.toolStripMenuItem.DropDownItems.Add(item);
//これなら反映される。
var item = new ToolStripButton("テスト");
item.AutoSize = false;
item.Width = 100;
this.toolStripMenuItem.DropDownItems.Add(item);
幅を指定しても無視されてしまいます。
ToolStripButtonであれば反映されるのですが、ToolStripMenuItemでも指定する方法を教えてください。
//指定しても無視される(文字に合わせた幅になってしまう)
var item = new ToolStripMenuItem("テスト");
item.AutoSize = false;
item.Width = 100;
this.toolStripMenuItem.DropDownItems.Add(item);
//これなら反映される。
var item = new ToolStripButton("テスト");
item.AutoSize = false;
item.Width = 100;
this.toolStripMenuItem.DropDownItems.Add(item);
282デフォルトの名無しさん
2020/01/04(土) 18:54:04.23ID:kH3pRzgo >>281
ContextMenuStripでAutoSize=falseにしてそれをDropDownに登録するのはだめなのか?
ContextMenuStripでAutoSize=falseにしてそれをDropDownに登録するのはだめなのか?
283デフォルトの名無しさん
2020/01/04(土) 23:39:17.56ID:oOekXYXc >>281
やってみた感じ、DropDownが表示される時に
MenuItemの場合はWidthではなくてTextを使って横幅を評価しているみたいなのでダメっぽいねw
(AutoSize = falseにした場合、MenuItemの幅自体はちゃんと設定した値になっていることは
マウスオーバーした時のハイライトの枠の大きさで確認できる)
Labelの場合はAutoSizeをfalseにすればWidthもHeightも設定した値が
そのまま表示に反映されるようなので、これをプレースホルダー的に使うことは出来そう。
バッドノウハウ感全開だけどw
でもMenuItemの幅をわざわざ制御したい理由が思いつかんw
やってみた感じ、DropDownが表示される時に
MenuItemの場合はWidthではなくてTextを使って横幅を評価しているみたいなのでダメっぽいねw
(AutoSize = falseにした場合、MenuItemの幅自体はちゃんと設定した値になっていることは
マウスオーバーした時のハイライトの枠の大きさで確認できる)
Labelの場合はAutoSizeをfalseにすればWidthもHeightも設定した値が
そのまま表示に反映されるようなので、これをプレースホルダー的に使うことは出来そう。
バッドノウハウ感全開だけどw
でもMenuItemの幅をわざわざ制御したい理由が思いつかんw
284デフォルトの名無しさん
2020/02/11(火) 16:42:09.82ID:IKSpGnXe C#でPDF生成するのに定番のライブライはどれ?
285デフォルトの名無しさん
2020/02/11(火) 16:57:55.37ID:+cYPhDtF skiasharpかのう
286デフォルトの名無しさん
2020/02/11(火) 17:48:40.11ID:SM6OROcH iTextSharp
287デフォルトの名無しさん
2020/02/11(火) 18:32:47.01ID:3sdew+Rs TextBoxに、テンプレート的なデフォルト文字列を持たせたいのですが、
Formのコンストラクタで
textBox1.Text = "文字列";
という方法で指定すると、TextBoxが表示されてから何も変更してない状態でもCtrl+Zで文字列が消えてしまいます。
どうすれば、消えないようにできるでしょうか?
Formのコンストラクタで
textBox1.Text = "文字列";
という方法で指定すると、TextBoxが表示されてから何も変更してない状態でもCtrl+Zで文字列が消えてしまいます。
どうすれば、消えないようにできるでしょうか?
288デフォルトの名無しさん
2020/02/11(火) 18:49:44.84ID:zRIDVkEW >>287
試してみたけどこちらでは.Net3.5でも.Net4.62でも再現しない
念のためフォームのShown時のCanUndoを見たらfalseになっているからUndoが効くはずがない
どこの違いなのか分からないが文字列設定後かShown時にとりあえずtextBox1.ClearUndo()を入れてみたら
試してみたけどこちらでは.Net3.5でも.Net4.62でも再現しない
念のためフォームのShown時のCanUndoを見たらfalseになっているからUndoが効くはずがない
どこの違いなのか分からないが文字列設定後かShown時にとりあえずtextBox1.ClearUndo()を入れてみたら
289デフォルトの名無しさん
2020/02/11(火) 20:57:38.89ID:b7fKfEtL290デフォルトの名無しさん
2020/02/11(火) 21:01:04.04ID:zRIDVkEW キーボード眺めて思ったけどCTRL+ZでなくてCTRL+Xしている可能性もあるなw
手入力じゃなくコード上の代入だとUndoできないんだよな
手入力じゃなくコード上の代入だとUndoできないんだよな
291デフォルトの名無しさん
2020/02/12(水) 01:52:31.19ID:CB9IiDBv 実務経験1年で月収80万稼げるエンジニアになった理由
https://www.youtube.com/watch?v=DrbbyGsHQic
意識が低いエンジニアこそフリーランスになれ
https://www.youtube.com/watch?v=nSEaAJlgjbQ
フリーランスエンジニアの週3労働ってどんな感じ?
https://www.youtube.com/watch?v=8yjoDCdbzMc
ぼくがスキルのない社畜ならこうやって脱する
https://www.youtube.com/watch?v=aae8xxbUlMM
初めて人を雇ったらもう二度とサラリーマンをやりたくないと思った話
https://www.youtube.com/watch?v=U0OCGRVLFsM
プログラミングは文系でも余裕で出来ます!理由を現役プログラマーが解説
https://www.youtube.com/watch?v=iBOeiSKBIW8
貧乏人こそ社会不適合者
https://www.youtube.com/watch?v=O3BT72BIBJI
元ド貧乏が教える】貧乏を抜け出すための2つの考え方
https://www.youtube.com/watch?v=IRrCgTy3ckc
より良いオファー貰ってるのに転職しないとか何考えてるの?
https://www.youtube.com/watch?v=i0J6uRhlj7o
https://www.youtube.com/watch?v=DrbbyGsHQic
意識が低いエンジニアこそフリーランスになれ
https://www.youtube.com/watch?v=nSEaAJlgjbQ
フリーランスエンジニアの週3労働ってどんな感じ?
https://www.youtube.com/watch?v=8yjoDCdbzMc
ぼくがスキルのない社畜ならこうやって脱する
https://www.youtube.com/watch?v=aae8xxbUlMM
初めて人を雇ったらもう二度とサラリーマンをやりたくないと思った話
https://www.youtube.com/watch?v=U0OCGRVLFsM
プログラミングは文系でも余裕で出来ます!理由を現役プログラマーが解説
https://www.youtube.com/watch?v=iBOeiSKBIW8
貧乏人こそ社会不適合者
https://www.youtube.com/watch?v=O3BT72BIBJI
元ド貧乏が教える】貧乏を抜け出すための2つの考え方
https://www.youtube.com/watch?v=IRrCgTy3ckc
より良いオファー貰ってるのに転職しないとか何考えてるの?
https://www.youtube.com/watch?v=i0J6uRhlj7o
293デフォルトの名無しさん
2020/02/14(金) 12:17:04.07ID:Rj5e84UH >>292
それ日本語の折り返しに対応してないとか、難あるよ。
それ日本語の折り返しに対応してないとか、難あるよ。
294デフォルトの名無しさん
2020/02/14(金) 12:38:43.18ID:a5iC3cHy 日本語は必須事項ではないので多分大丈夫です
295デフォルトの名無しさん
2020/02/14(金) 12:47:36.23ID:7R4aPKWb PDF仮想プリンタの存在前提で普通にGDI+で書けば楽だと思うけどな
Win10ならデフォで入ってるんだし
Win10ならデフォで入ってるんだし
296デフォルトの名無しさん
2020/02/14(金) 13:04:12.74ID:a5iC3cHy なるほど!
検討してみます。ありがとう!
検討してみます。ありがとう!
297デフォルトの名無しさん
2020/02/28(金) 18:11:07.35ID:HAMXUqwp win32のhage.rcファイルからhage.resを造って-win32res:hage.resでexeにリンクしてるとき
hage.rcの中身が
hogehoge BITMAP "filename.bmp"
のときは
Bitmap a = Bitmap.FromResource(hInst, "hogehoge");
で取得出来るのですが
hage.rcの中身が
456 BITMAP "filename.bmp"
だと
Bitmap b = Bitmap.FromResource(hInst, 456);
Bitmap b = Bitmap.FromResource(hInst, Convert.ToString((IntPtr)456));
Bitmap b = Bitmap.FromResource(hInst, Convert.ToString((IntPtr)((UInt16)456)));
とかで取得出来ないのですが
456を上手くBitmap.FromResource()に渡す方法は無いのでしょうか?
hage.rcの中身が
hogehoge BITMAP "filename.bmp"
のときは
Bitmap a = Bitmap.FromResource(hInst, "hogehoge");
で取得出来るのですが
hage.rcの中身が
456 BITMAP "filename.bmp"
だと
Bitmap b = Bitmap.FromResource(hInst, 456);
Bitmap b = Bitmap.FromResource(hInst, Convert.ToString((IntPtr)456));
Bitmap b = Bitmap.FromResource(hInst, Convert.ToString((IntPtr)((UInt16)456)));
とかで取得出来ないのですが
456を上手くBitmap.FromResource()に渡す方法は無いのでしょうか?
298デフォルトの名無しさん
2020/02/28(金) 18:48:54.41ID:snfNueOm299デフォルトの名無しさん
2020/02/28(金) 19:02:19.22ID:HAMXUqwp ありがとう
これだと自分でWin32APIのLoadBitmap呼んだ方が速い気がしないでもない
これだと自分でWin32APIのLoadBitmap呼んだ方が速い気がしないでもない
300デフォルトの名無しさん
2020/03/01(日) 05:48:57.42ID:wVHwYgLC こっちは2018年かよ
雑談するには迷惑かからんでいいけど
雑談するには迷惑かからんでいいけど
301デフォルトの名無しさん
2020/03/01(日) 16:22:20.47ID:KSyofv5N [DllImport("user32.dll", CharSet=CharSet.Auto)]
private static extern IntPtr LoadBitmap(IntPtr hInst, IntPtr id);
[DllImport("gdi32.dll")]
private static extern bool DeleteObject(IntPtr handle);
と
IntPtr p = (IntPtr)((UInt16)id);
IntPtr hBitmap = LoadBitmap(hInst, p);
Bitmap b = (Bitmap)Image.FromHbitmap(hBitmap);
DeleteObject(hBitmap);
return b;
でうまくいきました
CharSet=CharSet.Auto を書かなくても動くのですが
書かない場合だと LoadBitmapW ではなく LoadBitmapA の方が使われるようで
id が数値リソースのときは問題出ないのですが string でリソース名を指定するときに
参照されなくなるので書いておく方が良さそうです
IntPtr p = Marshal.StringToHGlobalAuto(rn); // OK
IntPtr p = Marshal.StringToHGlobalUni(rn); // OK
IntPtr p = Marshal.StringToHGlobalAnsi(rn); // CharSet.Auto 書かないときはこっちを書くと動作
private static extern IntPtr LoadBitmap(IntPtr hInst, IntPtr id);
[DllImport("gdi32.dll")]
private static extern bool DeleteObject(IntPtr handle);
と
IntPtr p = (IntPtr)((UInt16)id);
IntPtr hBitmap = LoadBitmap(hInst, p);
Bitmap b = (Bitmap)Image.FromHbitmap(hBitmap);
DeleteObject(hBitmap);
return b;
でうまくいきました
CharSet=CharSet.Auto を書かなくても動くのですが
書かない場合だと LoadBitmapW ではなく LoadBitmapA の方が使われるようで
id が数値リソースのときは問題出ないのですが string でリソース名を指定するときに
参照されなくなるので書いておく方が良さそうです
IntPtr p = Marshal.StringToHGlobalAuto(rn); // OK
IntPtr p = Marshal.StringToHGlobalUni(rn); // OK
IntPtr p = Marshal.StringToHGlobalAnsi(rn); // CharSet.Auto 書かないときはこっちを書くと動作
302デフォルトの名無しさん
2020/03/02(月) 10:28:32.19ID:NX3+Q9hq C#というより.NET Framework全般の問題かもしれませんが・・・
ビルドした実行ファイルの拡張子を7zにして開けると
.rsrc(フォルダ)
.text
.reloc
というファイルが出てきます
このうち「.text」をエディタで開けると
「C:\Users\ユーザー名\source\repos\プロジェクト名\obj\Release\実行ファイル名.pdb」
の文字列がそのまま入っておりユーザー名まで見えてしまいます
プロジェクトのプロパティなど見てみましたが該当する文字列は設定されていませんでした
この文字列が入らないようにビルドするにはどうすれば良いでしょうか?
ビルドした実行ファイルの拡張子を7zにして開けると
.rsrc(フォルダ)
.text
.reloc
というファイルが出てきます
このうち「.text」をエディタで開けると
「C:\Users\ユーザー名\source\repos\プロジェクト名\obj\Release\実行ファイル名.pdb」
の文字列がそのまま入っておりユーザー名まで見えてしまいます
プロジェクトのプロパティなど見てみましたが該当する文字列は設定されていませんでした
この文字列が入らないようにビルドするにはどうすれば良いでしょうか?
303デフォルトの名無しさん
2020/03/02(月) 10:29:26.56ID:NX3+Q9hq あ、本スレは別でしたかすみません
304デフォルトの名無しさん
2020/03/02(月) 10:31:33.41ID:nPQHiUH/ >>302
C#の問題じゃなくVisual studioとかのビルド側の設定の話だから該当するスレでやれ
C#の問題じゃなくVisual studioとかのビルド側の設定の話だから該当するスレでやれ
305デフォルトの名無しさん
2020/03/02(月) 11:10:23.06ID:glnmwhpK hoge.Dispose()って必ず呼ぶ必要ありますか?
ネットにあるサンプルでDispose()してるのと放ったらかしなのとあるようですが
放ったらかしでも問題無いとしたらわざわざDispose()呼ぶのはなぜですか?
ネットにあるサンプルでDispose()してるのと放ったらかしなのとあるようですが
放ったらかしでも問題無いとしたらわざわざDispose()呼ぶのはなぜですか?
306デフォルトの名無しさん
2020/03/02(月) 11:55:33.00ID:OjHPSko6 >>305
必ず呼ぶ必要はないが呼んだ方が良い
o リソース解放のタイミングやスレッドが制御できないのでそれらに依存する場合不具合の温床になる可能性
o 無駄なオブジェクトの昇格が起きてしまいGCに悪影響が出る可能性
いずれも無視できる場合もあれば致命的になる場合もある
サンプル程度で目くじら立てる必要はまったくないが
本番では呼んだ方が良い
必ず呼ぶ必要はないが呼んだ方が良い
o リソース解放のタイミングやスレッドが制御できないのでそれらに依存する場合不具合の温床になる可能性
o 無駄なオブジェクトの昇格が起きてしまいGCに悪影響が出る可能性
いずれも無視できる場合もあれば致命的になる場合もある
サンプル程度で目くじら立てる必要はまったくないが
本番では呼んだ方が良い
307デフォルトの名無しさん
2020/03/02(月) 12:09:29.55ID:glnmwhpK なるほどありがとうございます
ちなみに
using(Graphics g = Graphics.FromImage(hoge)){
...
}
みたいなときスコープ抜けるとgのDispose()は呼ばれないですか?
抜ける前に自分でg.Dispose();しておく必要ありますか?
ちなみに
using(Graphics g = Graphics.FromImage(hoge)){
...
}
みたいなときスコープ抜けるとgのDispose()は呼ばれないですか?
抜ける前に自分でg.Dispose();しておく必要ありますか?
308デフォルトの名無しさん
2020/03/02(月) 12:27:47.69ID:MTJ6Jwm2 disposeを自動で呼んでもらうためにusing構文がある
309デフォルトの名無しさん
2020/03/02(月) 15:08:50.50ID:rG8m8EdX >>307
せめてこのあたりは一読してから質問した方がいい
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/using-statement
せめてこのあたりは一読してから質問した方がいい
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/using-statement
310デフォルトの名無しさん
2020/03/02(月) 15:54:23.45ID:glnmwhpK311デフォルトの名無しさん
2020/03/02(月) 16:35:38.68ID:glnmwhpK 何か今までGCに任せれば良いやって適当に書いてたんですが
意外とDispose()呼ばないといけない場所多いんですね
意外とDispose()呼ばないといけない場所多いんですね
312デフォルトの名無しさん
2020/03/02(月) 16:37:42.01ID:glnmwhpK クラスを書く時デストラクタとDisposeを省略するなっていうのが今回得た教訓かも知れません
313デフォルトの名無しさん
2020/03/02(月) 17:18:06.30ID:8o+Bfjp3 ちゃんとした製品にするようなソフトならケアするけど個人やチームで使う程度のちょっとしたツールだったら一切書かないな
314デフォルトの名無しさん
2020/03/02(月) 17:24:53.84ID:qKOTAeuh グラフィック周りや通信周り、データーベース周りあたりはちゃんと書いといた方がいいんじゃねえか?
315デフォルトの名無しさん
2020/03/02(月) 18:39:31.60ID:eX7+1wsX 稼げるブログの始め方をブロガーが解説!副業や不労所得を作る
https://www.youtube.com/watch?v=CHn6tNCYAZM
第1回 ブログをどうやって始めるのか?初心者の頃に知りたかったことをブロガーがわかりやすく解説【ブログで稼ぐ】
https://www.youtube.com/watch?v=TEMUZvQSM1Q&t=708s
第2回 ブログで不労所得1億円!?ブログでお金を稼ぐ仕組みを解説〜
イケダハヤトさんはブログで年間1.5億円の収入!【ブログで稼ぐ】
https://www.youtube.com/watch?v=eWw-RfbNP1g
第3回【学生向け】ブログで月1万円を稼いでいる実例をわかりやすく紹介〜
ブログやアフィリエイト入門。【ブログで稼ぐ】
https://www.youtube.com/watch?v=mjHp2Fqj9OE&t=190s
第5回 月100万円を稼げるようになった体験談!副業でブログを開始し不労所得に!【ブログで稼ぐ】
https://www.youtube.com/watch?v=nwrlcNSdw0U&t=523s
サラリーマンをやりながらどうやって副業をやっていたのか?スケジュールや作業量などを解説
https://www.youtube.com/watch?v=FGlGur0XC_k
https://www.youtube.com/watch?v=CHn6tNCYAZM
第1回 ブログをどうやって始めるのか?初心者の頃に知りたかったことをブロガーがわかりやすく解説【ブログで稼ぐ】
https://www.youtube.com/watch?v=TEMUZvQSM1Q&t=708s
第2回 ブログで不労所得1億円!?ブログでお金を稼ぐ仕組みを解説〜
イケダハヤトさんはブログで年間1.5億円の収入!【ブログで稼ぐ】
https://www.youtube.com/watch?v=eWw-RfbNP1g
第3回【学生向け】ブログで月1万円を稼いでいる実例をわかりやすく紹介〜
ブログやアフィリエイト入門。【ブログで稼ぐ】
https://www.youtube.com/watch?v=mjHp2Fqj9OE&t=190s
第5回 月100万円を稼げるようになった体験談!副業でブログを開始し不労所得に!【ブログで稼ぐ】
https://www.youtube.com/watch?v=nwrlcNSdw0U&t=523s
サラリーマンをやりながらどうやって副業をやっていたのか?スケジュールや作業量などを解説
https://www.youtube.com/watch?v=FGlGur0XC_k
316デフォルトの名無しさん
2020/03/02(月) 19:08:02.78ID:rG8m8EdX317デフォルトの名無しさん
2020/03/02(月) 19:16:23.68ID:dv6bLfIQ そしてHttpClientで大量のTIME_WAITを抱えると
318デフォルトの名無しさん
2020/03/02(月) 20:10:59.40ID:UF2yd5CT デストラクタはへたに実装しないほうが良いかもしれんぞ
319デフォルトの名無しさん
2020/03/02(月) 20:13:55.05ID:sj+3ONQ9 また要件の定まらないくだらない議論始めるのか?
320デフォルトの名無しさん
2020/03/02(月) 20:18:10.66ID:mQ4CLNjj >>307
Graphicsの実装次第だよ
usingで後始末がされるためにはされるように処理を作成する必要がある
みんなが作ってて広く普及してるクラスなら多分大丈夫だけど
今回のプロジェクトで作成したばっかのクラスはテストやるまで信用するな
Graphicsの実装次第だよ
usingで後始末がされるためにはされるように処理を作成する必要がある
みんなが作ってて広く普及してるクラスなら多分大丈夫だけど
今回のプロジェクトで作成したばっかのクラスはテストやるまで信用するな
321デフォルトの名無しさん
2020/03/02(月) 20:37:39.86ID:4FWK+c4C 既視感しか感じない質問だからどうせアレだろと思ったら本気の質問だったのかなw
322デフォルトの名無しさん
2020/03/02(月) 22:53:10.49ID:ywWMC8is >>320
> Graphicsの実装次第だよ
はあ?
g.Dispose()を呼ばない実装なんてできるのか?w
> usingで後始末がされるためにはされるように処理を作成する必要がある
それはまた別の話な
> Graphicsの実装次第だよ
はあ?
g.Dispose()を呼ばない実装なんてできるのか?w
> usingで後始末がされるためにはされるように処理を作成する必要がある
それはまた別の話な
323デフォルトの名無しさん
2020/03/02(月) 23:49:32.46ID:4FWK+c4C まあ可能不可能ならこういうことは可能だろうね
public class Graphics : IDisposable
{
void IDisposable.Dispose()
{
}
public void Disposable()
{
...
}
}
public class Graphics : IDisposable
{
void IDisposable.Dispose()
{
}
public void Disposable()
{
...
}
}
324デフォルトの名無しさん
2020/03/03(火) 00:51:00.55ID:uFujH6tR >>323
public class Graphics
{
void Dispose()
{
}
}
( ゚д゚)・・・
public class Graphics
{
void Dispose()
{
}
}
( ゚д゚)・・・
325デフォルトの名無しさん
2020/03/04(水) 09:15:28.58ID:TuAQ3w56 プログラミングそのものの話ではないんですが、c#で他の機械とソケット通信してデータやり取りしてこちらからの指示やその応答でなんらかの処理を行うプログラムはどう作るのが一般的なのでしょう?
通信を行うプログラムと業務用にオペレータからの操作とその他を担うプログラムにわけて作ろうと思っています。
通信相手はIOTのマイコンのようなもので独自のプロトコルがTCP/IP上で規定されています。
通信プログラムと業務用のアプリのデータのやり取りはファイルとしてデータを保存するのも手ではあるのですが、読み書き遅いので、共有メモリ的な使い方とかメッセージ的な使い方にならないかな、と。
linux上でc言語ばかり使っているので、どうするのが一般的なのかよく分かっておりません。
よろしくお願いします。
通信を行うプログラムと業務用にオペレータからの操作とその他を担うプログラムにわけて作ろうと思っています。
通信相手はIOTのマイコンのようなもので独自のプロトコルがTCP/IP上で規定されています。
通信プログラムと業務用のアプリのデータのやり取りはファイルとしてデータを保存するのも手ではあるのですが、読み書き遅いので、共有メモリ的な使い方とかメッセージ的な使い方にならないかな、と。
linux上でc言語ばかり使っているので、どうするのが一般的なのかよく分かっておりません。
よろしくお願いします。
326デフォルトの名無しさん
2020/03/04(水) 09:44:00.83ID:hHbt2ovK 他の機械がWindowsならVNCサーバー入れるのが一番楽
327デフォルトの名無しさん
2020/03/04(水) 09:51:06.45ID:TuAQ3w56328デフォルトの名無しさん
2020/03/04(水) 09:51:13.72ID:VYRn8ATr 質問がごちゃっとしてるけど
要はローカルマシン内でプロセス間通信したいってこと?
今はgRPCが推されてるんじゃね 知らんけど
要はローカルマシン内でプロセス間通信したいってこと?
今はgRPCが推されてるんじゃね 知らんけど
329デフォルトの名無しさん
2020/03/04(水) 10:18:47.95ID:TuAQ3w56 >>328
わかりにくくてすいません
二つあって、ソケット通信するプログラムと業務用のプログラムを分けて作る場合の普通の作り方です
ソケット通信するプログラムは言語に付属してるライブラリをそのまんま使うしかないなと思ってます
プロトコルは規定されてるのでうまく作れないならcで作るしかないかな、と
業務用のアプリとソケット通信するプログラムのIPCはc#でどうやるのがWindowsの流儀なのか、お尋ねしております
ご教示いただいたgRPCは後者についての情報ですね
はじめて聞く技術なのでわかっておりませんが、参考とさせていただきます。少し道具立てが大きそうですね
ありがとうございます
わかりにくくてすいません
二つあって、ソケット通信するプログラムと業務用のプログラムを分けて作る場合の普通の作り方です
ソケット通信するプログラムは言語に付属してるライブラリをそのまんま使うしかないなと思ってます
プロトコルは規定されてるのでうまく作れないならcで作るしかないかな、と
業務用のアプリとソケット通信するプログラムのIPCはc#でどうやるのがWindowsの流儀なのか、お尋ねしております
ご教示いただいたgRPCは後者についての情報ですね
はじめて聞く技術なのでわかっておりませんが、参考とさせていただきます。少し道具立てが大きそうですね
ありがとうございます
330デフォルトの名無しさん
2020/03/04(水) 10:24:23.69ID:hHbt2ovK >linux上でc言語ばかり使っているので、どうするのが一般的なのかよく分かっておりません。
「、」の前後で矛盾してるな
「、」の前後で矛盾してるな
331デフォルトの名無しさん
2020/03/04(水) 10:27:39.48ID:ITD9wOqz 普通にSocket使うけどな
332デフォルトの名無しさん
2020/03/04(水) 10:36:36.26ID:TuAQ3w56333デフォルトの名無しさん
2020/03/04(水) 10:37:16.05ID:TuAQ3w56 >>331
IPC的なものは使わずにソケット通信すると言うことですか。なるほど。
IPC的なものは使わずにソケット通信すると言うことですか。なるほど。
334デフォルトの名無しさん
2020/03/04(水) 10:51:26.57ID:VYRn8ATr TCP/IP通信自体は.NETにもSystem.Net.Sockets.SocketやらSystem.Net.Sockets.TcpClientやら用意されてる
TCP/IP上で独自プロトコルならこの辺使うけどIPCでは普通直接は使わない
TCP/IP上で独自プロトコルならこの辺使うけどIPCでは普通直接は使わない
335デフォルトの名無しさん
2020/03/04(水) 11:10:56.42ID:ITD9wOqz >>334
いや325に独自プロトコルって書いてあったんでな
いや325に独自プロトコルって書いてあったんでな
336デフォルトの名無しさん
2020/03/04(水) 11:18:37.67ID:TuAQ3w56 >>334、335
わかりにくくてすみません
IoTデバイスとの通信はTPCIP上で独自のアプリケーションプロトコルが規定されてて、それに従います
それをやる通信用のプロセスと別建ての業務用のプロセスの間でもデータのやりとりを行う必要があるのですが、IPCはどうやって普通は実現してるのかがC#を使う上でわかっておりません
わかりにくくてすみません
IoTデバイスとの通信はTPCIP上で独自のアプリケーションプロトコルが規定されてて、それに従います
それをやる通信用のプロセスと別建ての業務用のプロセスの間でもデータのやりとりを行う必要があるのですが、IPCはどうやって普通は実現してるのかがC#を使う上でわかっておりません
337デフォルトの名無しさん
2020/03/04(水) 11:37:01.00ID:nNNW6i++ プロセス間通信って、共有メモリみたいな奴か?
338デフォルトの名無しさん
2020/03/04(水) 11:58:57.18ID:TuAQ3w56 >>337
他にも組み合わせて使うと思いますが、その通りです。
他にも組み合わせて使うと思いますが、その通りです。
339デフォルトの名無しさん
2020/03/04(水) 12:31:07.29ID:TuAQ3w56 ど素人め、定番はこれだって回答がすぐにないのは
ひょっとすると、プロセスごとにわけて機能を作り込むような考え方はWindowsというかC#というかわからないですが、一般的ではないのでしょうか?
ひょっとすると、プロセスごとにわけて機能を作り込むような考え方はWindowsというかC#というかわからないですが、一般的ではないのでしょうか?
340デフォルトの名無しさん
2020/03/04(水) 12:55:31.61ID:RbQqNGaU 触っちゃいけない人だったか
341デフォルトの名無しさん
2020/03/04(水) 13:05:25.33ID:TuAQ3w56 >>340
私の書いた文はわかりにくいかもしれませんが、そのご指摘はどういう意味なのでしょうか?
私の書いた文はわかりにくいかもしれませんが、そのご指摘はどういう意味なのでしょうか?
342デフォルトの名無しさん
2020/03/04(水) 13:37:21.24ID:SkBOTqi1343デフォルトの名無しさん
2020/03/04(水) 13:43:31.55ID:pkFzTgEj 普通の方法があるんじゃなくて目的に応じて複数の方法があるという当たり前の話なだけなので
普通の普通の連呼されてもこんな方法もあるよって情報が増えるだけやぞ
既にもらった情報で自分の目的に合致するのか一旦実践した方がいいんじゃねえの
なんか最初のレス見る限りメモリマップトファイルとかウィンドウメッセージで事足りる話に見えるが
普通の普通の連呼されてもこんな方法もあるよって情報が増えるだけやぞ
既にもらった情報で自分の目的に合致するのか一旦実践した方がいいんじゃねえの
なんか最初のレス見る限りメモリマップトファイルとかウィンドウメッセージで事足りる話に見えるが
344デフォルトの名無しさん
2020/03/04(水) 13:57:38.59ID:ITD9wOqz 元々のSocketはプロセス間通信用
SockAddr の AF_UNIXがそれ。
Windowsは長い間、AF_UNIXをサポート
していなかったが、去年ぐらいからwin10で使えるようになっている。(デスクトップとWSLの場合)
いつディスコン喰らうか判らない高位ライブラリーを使うか、
自分に技術蓄積がある(?)下位ライブラリーを使うかの判断はケースバイケースでしょぅね
幸運を
SockAddr の AF_UNIXがそれ。
Windowsは長い間、AF_UNIXをサポート
していなかったが、去年ぐらいからwin10で使えるようになっている。(デスクトップとWSLの場合)
いつディスコン喰らうか判らない高位ライブラリーを使うか、
自分に技術蓄積がある(?)下位ライブラリーを使うかの判断はケースバイケースでしょぅね
幸運を
345デフォルトの名無しさん
2020/03/04(水) 14:38:19.70ID:TuAQ3w56346デフォルトの名無しさん
2020/03/04(水) 17:35:15.89ID:/myb4o4P いろいろとアドバイスしてくれてる人たちに
ど素人め
と罵倒したのはなんだったの?
ど素人め
と罵倒したのはなんだったの?
347デフォルトの名無しさん
2020/03/04(水) 18:01:30.38ID:TuAQ3w56 >>346
ははは
そう解釈されましたか
識者「ど素人め、定番はこれだ」
私 なるほどー
という意味で書いたのですが、誤読を誘発してしまいましたね
私が他者へど素人めと言ってるわけではなく、識者ならこんなフワフワした質問は、パッと答えてくれるかなと思って書いたのです
ははは
そう解釈されましたか
識者「ど素人め、定番はこれだ」
私 なるほどー
という意味で書いたのですが、誤読を誘発してしまいましたね
私が他者へど素人めと言ってるわけではなく、識者ならこんなフワフワした質問は、パッと答えてくれるかなと思って書いたのです
348デフォルトの名無しさん
2020/03/04(水) 18:01:58.08ID:VYRn8ATr 346
それは誤読
それは誤読
349デフォルトの名無しさん
2020/03/04(水) 18:19:39.77ID:yiNVycVp >>325
>通信を行うプログラムと業務用にオペレータからの操作とその他を担うプログラムにわけて作ろうと思っています。
プロセスとかプログラムを分けて作りたい理由って何なの?
書いてる内容だけだとライブラリ化すれば十分なように思えるけど
>通信を行うプログラムと業務用にオペレータからの操作とその他を担うプログラムにわけて作ろうと思っています。
プロセスとかプログラムを分けて作りたい理由って何なの?
書いてる内容だけだとライブラリ化すれば十分なように思えるけど
350デフォルトの名無しさん
2020/03/04(水) 18:32:10.50ID:TuAQ3w56 >>349
機能が違うのが一番の理由です
設計するにあたって、通信の機能は独自のプロトコルがあるのでそれなりに考慮しなきゃいけないことが多くて、通信に専念させたいのですね
業務用のプロセスは、こちらはこちらでUIがありますので、通信を行う機能とは考察しなきゃいけないところが違います
また、両者の動作タイミングが全く違うこともありますね
機能が違うのが一番の理由です
設計するにあたって、通信の機能は独自のプロトコルがあるのでそれなりに考慮しなきゃいけないことが多くて、通信に専念させたいのですね
業務用のプロセスは、こちらはこちらでUIがありますので、通信を行う機能とは考察しなきゃいけないところが違います
また、両者の動作タイミングが全く違うこともありますね
351デフォルトの名無しさん
2020/03/04(水) 18:41:49.49ID:SkBOTqi1 機能が違うだけならプロジェクト分けてdll化すればよいだけなので、
普通に考えれば不特定多数(いやらしい言い方だけど)からのアクセスが要件なんでしょうたぶん
知らんけど
普通に考えれば不特定多数(いやらしい言い方だけど)からのアクセスが要件なんでしょうたぶん
知らんけど
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 産経新聞「高市早苗の答弁さぁ……思慮が足りてなくね?官僚と詰めずに思いつきで話しているでしょ」 [175344491]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
