!extend:checked:vvvvv:1000:512
■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part93
http://mevius.5ch.net/test/read.cgi/tech/1492818720/
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
C#, C♯, C#相談室 Part94
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 935f-5Uxj)
2019/03/20(水) 18:57:36.47ID:ZZcTomnN0521デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
2021/04/17(土) 16:58:25.17ID:3+8Yd0vAa >>518
そもそもプロジェクトの規模に比例してVSが重くなったりしないと思うよ。
少なくとも「ちまちまやってる」程度なら絶対にありえないと断言できる。
重くなってる理由は他にあるんじゃないのかな
必要性もないのにアセンブリを分ける(dllにする)ことには反対。
そもそもプロジェクトの規模に比例してVSが重くなったりしないと思うよ。
少なくとも「ちまちまやってる」程度なら絶対にありえないと断言できる。
重くなってる理由は他にあるんじゃないのかな
必要性もないのにアセンブリを分ける(dllにする)ことには反対。
522デフォルトの名無しさん (ワッチョイ 376e-Ho7r)
2021/04/17(土) 17:43:26.21ID:knKDzqXi0 皆さんレスありがとうございます
ソリューション内にプロジェクト分けてそれぞれ書き出したDLLをメインのプロジェクトで
読み込ませて使う・・・メインのビルド(動作テストなど)は軽くなるという理解であってますか?
修正があれば、そのプロジェクトだけビルドし直す、
最終的な製品にするインストーラー生成時はかわらないと
>>521
かれこれ2年近く機能拡張続けていて、Form画面だけで300くらいで
それとほぼ同数のサードパーティ製の表形式コントロールやら帳票やらもある感じです
vsフォルダ作り直したり、VisualStudioの軽量化はいろいろ試して
多少は軽くなってますが、ファイル数が多ければビルドに時間がかかるし
InteliSenseやエラーの出力など、プロジェクト内のファイル数が多ければ多いほど
そのための処理が入るのかなと思ったのですが違うんでしょうか
何分素人レベルなので、デバック→エラー→修正→デバック→の繰り返しでなんとかやってるので
ビルドの速さが結構切実だったりします
ソリューション内にプロジェクト分けてそれぞれ書き出したDLLをメインのプロジェクトで
読み込ませて使う・・・メインのビルド(動作テストなど)は軽くなるという理解であってますか?
修正があれば、そのプロジェクトだけビルドし直す、
最終的な製品にするインストーラー生成時はかわらないと
>>521
かれこれ2年近く機能拡張続けていて、Form画面だけで300くらいで
それとほぼ同数のサードパーティ製の表形式コントロールやら帳票やらもある感じです
vsフォルダ作り直したり、VisualStudioの軽量化はいろいろ試して
多少は軽くなってますが、ファイル数が多ければビルドに時間がかかるし
InteliSenseやエラーの出力など、プロジェクト内のファイル数が多ければ多いほど
そのための処理が入るのかなと思ったのですが違うんでしょうか
何分素人レベルなので、デバック→エラー→修正→デバック→の繰り返しでなんとかやってるので
ビルドの速さが結構切実だったりします
523デフォルトの名無しさん (ワッチョイ 3778-tdH6)
2021/04/17(土) 18:00:16.57ID:gq87BRHm0 そりゃ必要ないソースもビルドされるから遅くなるわな
まずは処理単位でプロジェクトを分割することオススメするよ
まずは処理単位でプロジェクトを分割することオススメするよ
524デフォルトの名無しさん (ワッチョイ 9f6a-tdH6)
2021/04/18(日) 00:26:44.62ID:KruIYoV70 こうやって情報を後出しすると話がなかなか進まないのです
525デフォルトの名無しさん (ワッチョイ bf62-rOyz)
2021/04/18(日) 12:09:57.65ID:v8qpskqd0 普通にソース書いてデバックするだけのプロジェクトなら差分ビルドでそんなに時間がかかるイメージないけどな
別の要因が色々出てきそうだけど、まあ分割して解決したらいいね
別の要因が色々出てきそうだけど、まあ分割して解決したらいいね
526デフォルトの名無しさん (ワッチョイ 9f84-Ho7r)
2021/04/18(日) 13:43:19.23ID:jmo1IQPt0 makefileとかだと依存関係が正しくなくて差分ビルドのつもりでも全ソース
フルビルドになっていたとかあるけど
あと、サードパーティーのコントロールとかって話なので、パッケージが
なんでも無条件にフルビルドするので、自分の修正とは関係ないところで
ガンガンビルドがはしっているとか
フルビルドになっていたとかあるけど
あと、サードパーティーのコントロールとかって話なので、パッケージが
なんでも無条件にフルビルドするので、自分の修正とは関係ないところで
ガンガンビルドがはしっているとか
527デフォルトの名無しさん (アウアウウー Sa1b-Qn2Y)
2021/04/19(月) 08:49:19.92ID:SmagIxBsa デバックってなんだよデバグだろw
528デフォルトの名無しさん (ワッチョイ 3702-tdH6)
2021/04/20(火) 08:44:29.47ID:eIvQPkWn0 DEBUG
DEBUGGER
DEBUGGER
529デフォルトの名無しさん (ワッチョイ 97b5-Ct9k)
2021/04/20(火) 16:04:11.65ID:92CAyifa0 BUGGER = 肛門性交する奴
530デフォルトの名無しさん (アウアウウー Sa1b-Qn2Y)
2021/04/21(水) 20:50:02.04ID:qBUFmeXia enbug 修正などよって新たなバグを作り込む
531デフォルトの名無しさん (アウアウクー MMd2-n2ja)
2021/04/23(金) 13:10:42.79ID:gxfm9rdtM VisualStudio2019のクエリビルダー使ってFillを生成してるんですが、
クエリビルダーの「クエリの実行」ではパラメータに「%」使って目的のデータを取得出来るのに
生成したFillの「データのプレビュー」でパラメータに「%」使うと何もヒットしないという現象が起きてて途方に暮れてます
ちなみにアンダースコアは任意の1文字で検索してくれるので初心者女子高生の私には
もう原因さっぱり判りませんの(´・ω・`)
クエリビルダーの「クエリの実行」ではパラメータに「%」使って目的のデータを取得出来るのに
生成したFillの「データのプレビュー」でパラメータに「%」使うと何もヒットしないという現象が起きてて途方に暮れてます
ちなみにアンダースコアは任意の1文字で検索してくれるので初心者女子高生の私には
もう原因さっぱり判りませんの(´・ω・`)
532デフォルトの名無しさん (ラクッペペ MM34-Edqn)
2021/04/23(金) 13:16:05.78ID:CEwDMyU+M Fillを生成?
533デフォルトの名無しさん (アウアウクー MMd2-n2ja)
2021/04/23(金) 13:36:44.61ID:gxfm9rdtM >>532
作成かな。メンゴメンゴ
作成かな。メンゴメンゴ
534デフォルトの名無しさん (ワッチョイ 8e2c-MVqC)
2021/04/23(金) 14:56:28.43ID:vlx7cXWJ0 RDBMSのクエリログで内容確認すれば
535デフォルトの名無しさん (ワッチョイ 8768-xm3u)
2021/05/03(月) 23:04:24.90ID:XKJBqUJn0 自力で簡易なセキュリティソフトを作りたいと思っています。
動きは単純で、登録されていない実行ファイルが勝手に外部に通信しようとしたらブロックするだけのものです。
AVASTがやってる動きです。
何らかのAPIをフックするのだろうという事は想像できますが、取っ掛かりが分かりません。
どのAPIを見れば良いのかご存じの方いらっしゃいますでしょうか?
動きは単純で、登録されていない実行ファイルが勝手に外部に通信しようとしたらブロックするだけのものです。
AVASTがやってる動きです。
何らかのAPIをフックするのだろうという事は想像できますが、取っ掛かりが分かりません。
どのAPIを見れば良いのかご存じの方いらっしゃいますでしょうか?
536デフォルトの名無しさん (ワントンキン MM4f-tZna)
2021/05/04(火) 10:07:10.31ID:N+ZQj8AqM npcap使うのが定番かな今は
537デフォルトの名無しさん (ワッチョイ 7f63-3Eyb)
2021/05/04(火) 10:36:28.73ID:x7uRD8HC0 Windowsの話だったらWindows Filtering Platformとか
538デフォルトの名無しさん (アウアウクー MM73-XxK1)
2021/05/13(木) 18:58:32.33ID:I198/5nSM wpf でtabcontroleで複数タブにrediobutton配置支店ですけど
これを全部一つのグループにすることってできないんですかね?
groupname指定しても駄目だったので仕様的に方法なしなんでしょうか……(´・ω・`)
これを全部一つのグループにすることってできないんですかね?
groupname指定しても駄目だったので仕様的に方法なしなんでしょうか……(´・ω・`)
539デフォルトの名無しさん (ワッチョイ be2c-5KFm)
2021/05/13(木) 20:02:28.36ID:a3yRiKHd0 GroupNameでは無理
IsCheckedへのバインディングとかでうまいことやって
IsCheckedへのバインディングとかでうまいことやって
540デフォルトの名無しさん (ワッチョイ fb24-jjtP)
2021/05/13(木) 23:35:30.68ID:MnuHueii0 >>535
明らかにC#の範囲外の質問でOSハックレベルの話だが、例えばWindowsならカーネルドライバを利用した通信フックライブラリはいくつかあったはず
んでTCPやUDPのソースポートから発信元プロセスは特定できるからそれくらいならすぐ作れるだろうけど
想像以上に多くのシステムプロセスが通信してるから登録するのめんどそうだけどな
明らかにC#の範囲外の質問でOSハックレベルの話だが、例えばWindowsならカーネルドライバを利用した通信フックライブラリはいくつかあったはず
んでTCPやUDPのソースポートから発信元プロセスは特定できるからそれくらいならすぐ作れるだろうけど
想像以上に多くのシステムプロセスが通信してるから登録するのめんどそうだけどな
541デフォルトの名無しさん (アウアウクー MM23-Ji+2)
2021/05/14(金) 19:19:35.19ID:hD9Eg79MM >>539
バインディングなんてわかるわけ無いだろ!(`;ω;´)
もう仕方ないからボタンと背景色でタブっぽい見た目作ってラジオボタンをVisibleったりhiddenったりしてそれっぽいの作った……
バインディングなんてわかるわけ無いだろ!(`;ω;´)
もう仕方ないからボタンと背景色でタブっぽい見た目作ってラジオボタンをVisibleったりhiddenったりしてそれっぽいの作った……
542デフォルトの名無しさん (ワッチョイ 3344-Adon)
2021/05/16(日) 04:48:26.69ID:CGr30bxH0 functorに関する質問です
C++で次のように書いとけば
template<typename Functor>
double Example( Functor func,・・・){
呼出し時に、引数funcに関数へのポインタでも、ラムダ式でも、関数名でも記述できますが、
C#で同じように、引数に、デリゲートでもラムダ式でも関数名でも記述可能にするにはどーすればいいのでしょうか?
C++で次のように書いとけば
template<typename Functor>
double Example( Functor func,・・・){
呼出し時に、引数funcに関数へのポインタでも、ラムダ式でも、関数名でも記述できますが、
C#で同じように、引数に、デリゲートでもラムダ式でも関数名でも記述可能にするにはどーすればいいのでしょうか?
543デフォルトの名無しさん (ワッチョイ ab2c-mHP1)
2021/05/16(日) 08:50:12.74ID:8qTwOc620 > 引数に、デリゲートでもラムダ式でも関数名でも記述可能にするには
デリゲート型を指定すればいい
double Example<T>(Func<T, double> func, T obj) { ... }
double ToDouble(Hoge hoge) { return hoge.Value; }
this.Example(obj => obj.Value, hoge);
this.Example(ToDouble, hoge);
this.Example(new Func<Hoge, double>(ToDouble), hoge);
ただしシグネチャが同じでもデリゲート型が違うと無理なのでラムダ式なりとおす必要がある
delegate TRet Converter<TArg, TRet>(TArg arg);
var conv = new Converter<Hoge, double>(obj => obj.Value);
this.Example(conv, hoge); // エラー
this.Example(obj => conv(obj), hoge); // OK
デリゲート型を指定すればいい
double Example<T>(Func<T, double> func, T obj) { ... }
double ToDouble(Hoge hoge) { return hoge.Value; }
this.Example(obj => obj.Value, hoge);
this.Example(ToDouble, hoge);
this.Example(new Func<Hoge, double>(ToDouble), hoge);
ただしシグネチャが同じでもデリゲート型が違うと無理なのでラムダ式なりとおす必要がある
delegate TRet Converter<TArg, TRet>(TArg arg);
var conv = new Converter<Hoge, double>(obj => obj.Value);
this.Example(conv, hoge); // エラー
this.Example(obj => conv(obj), hoge); // OK
544デフォルトの名無しさん (ワッチョイ e1da-jjUc)
2021/05/18(火) 04:46:17.76ID:MJ7hOma30 System.Collections.Generic.List<System.String> hips =
new System.Collections.Generic.List<System.String>(0);
hips.Add(@"尻");
hips.Add(@"ケツ");
hips.Add(@"Buttocks");
hips.Add(@"んまら");
hips.Add(@"臀");
hips.Add(@"ω");
hips.Add(@"Hip");
foreach (System.String hip in hips) {
System.Console.WriteLine(hip);
}
new System.Collections.Generic.List<System.String>(0);
hips.Add(@"尻");
hips.Add(@"ケツ");
hips.Add(@"Buttocks");
hips.Add(@"んまら");
hips.Add(@"臀");
hips.Add(@"ω");
hips.Add(@"Hip");
foreach (System.String hip in hips) {
System.Console.WriteLine(hip);
}
545デフォルトの名無しさん (ワッチョイ fa07-Mbt4)
2021/05/22(土) 21:17:48.56ID:ylKhWhlM0 俺のツレの先輩がc#プログラマに酷い目に遭わされたことがある
c#プログラマから金借りて返さんかったら、拉致られて拷問うけた
指の爪全部ペンチで剥がされてその後ペンチで指先を挟んで潰されたらしい
4本目くらいで痛みに耐え切れなくて舌噛み切って死のうとしたけど死ねなかったって
命までは取られなかったけど指先全部駄目になって切断したみたい
c#プログラマから金借りて返さんかったら、拉致られて拷問うけた
指の爪全部ペンチで剥がされてその後ペンチで指先を挟んで潰されたらしい
4本目くらいで痛みに耐え切れなくて舌噛み切って死のうとしたけど死ねなかったって
命までは取られなかったけど指先全部駄目になって切断したみたい
546デフォルトの名無しさん (ワッチョイ 4ef2-+Pd7)
2021/05/23(日) 08:27:53.86ID:ANX6JUnX0 改変コピペ?
547デフォルトの名無しさん (ワッチョイ 4e63-6qZI)
2021/05/23(日) 13:27:11.50ID:d15ZAA8n0 そうじゃなかったら知的障害かな
548デフォルトの名無しさん (ワッチョイ 796e-PRuz)
2021/06/05(土) 14:12:36.14ID:Zn+ZYGmH0 メモリ不足での相談です
小さいjpg画像ファイル(1ファイル50KB程度)を10,000ファイル程度
サードパーティ製のGridViewに投げ込んで表示させようとしてます
その前にList<Image>に下のような感じでStreamで投げ込んでいくのですが
var fs = System.IO.File.OpenRead(@filepath);
ListData = new Bitmap(Image.FromStream(fs, false, false));
fs.Dispose();
4000ファイルあたりでメモリ不足に陥ります
VSの診断ツールで見ていると、読み出しはじめて4GBで止まります
メモリが4Gでアウトになっているのは理解できるのですが
ローカル上のファイルの総データ量は800MB程度で、実際に読み込みがとまるあたりでは
せいぜい200MB程度読み込んだ程度と思います
2000ファイル程度にグループごとに都度分けて読み込ますしかないかなと思っていますが
確認すべき点(余計に容量食っている要因)やなにか他に方法があったらご教授ください
小さいjpg画像ファイル(1ファイル50KB程度)を10,000ファイル程度
サードパーティ製のGridViewに投げ込んで表示させようとしてます
その前にList<Image>に下のような感じでStreamで投げ込んでいくのですが
var fs = System.IO.File.OpenRead(@filepath);
ListData = new Bitmap(Image.FromStream(fs, false, false));
fs.Dispose();
4000ファイルあたりでメモリ不足に陥ります
VSの診断ツールで見ていると、読み出しはじめて4GBで止まります
メモリが4Gでアウトになっているのは理解できるのですが
ローカル上のファイルの総データ量は800MB程度で、実際に読み込みがとまるあたりでは
せいぜい200MB程度読み込んだ程度と思います
2000ファイル程度にグループごとに都度分けて読み込ますしかないかなと思っていますが
確認すべき点(余計に容量食っている要因)やなにか他に方法があったらご教授ください
549デフォルトの名無しさん (ワッチョイ 4d2d-Fu2c)
2021/06/05(土) 14:18:34.48ID:dB/oWOjW0 >>548
JpegをBitmapに展開してるのだから容量が増えるのは当然では
JpegをBitmapに展開してるのだから容量が増えるのは当然では
550デフォルトの名無しさん (ワッチョイ 796e-PRuz)
2021/06/05(土) 15:00:04.47ID:Zn+ZYGmH0551デフォルトの名無しさん (ワッチョイ ca6a-PRuz)
2021/06/05(土) 15:05:40.03ID:byK7y7eQ0552デフォルトの名無しさん (ワッチョイ 5573-EGuX)
2021/06/05(土) 17:36:11.90ID:L7L31nHe0 32bit優先が付いてるとか?
ただどっちみちアプリ全体どころか、1つのリストで4Gもメモリに保持とかは筋がめっちゃ悪いぞ。
4000ものフル画像が同時に必要とかあり得ないし。
表示上必要ならメモリ上にもつならすごく小さなサムネイルをダイナミックに並列処理で作りながら持つとか。
今表示に必要なものだけ、ダイナミックにメモリで並列処理でサムネ作るとかでしょ。
ただどっちみちアプリ全体どころか、1つのリストで4Gもメモリに保持とかは筋がめっちゃ悪いぞ。
4000ものフル画像が同時に必要とかあり得ないし。
表示上必要ならメモリ上にもつならすごく小さなサムネイルをダイナミックに並列処理で作りながら持つとか。
今表示に必要なものだけ、ダイナミックにメモリで並列処理でサムネ作るとかでしょ。
553デフォルトの名無しさん (ワッチョイ 55ad-wkOw)
2021/06/05(土) 18:00:28.83ID:Oyn+hOcj0 今時VirtualMode的なものが無いグリッドコントロールなんてあるのか?
554デフォルトの名無しさん (ワッチョイ 796e-PRuz)
2021/06/05(土) 19:41:37.20ID:Zn+ZYGmH0 >>552
やっぱり、そうですよね
実際には10000ファイル越える予定だったのでなおさらですよね
スクロール時のスピード感は多少落ちますが
素直にグリッドコントロールが描画する際に都度読み込むようにすることにします
やっぱり、そうですよね
実際には10000ファイル越える予定だったのでなおさらですよね
スクロール時のスピード感は多少落ちますが
素直にグリッドコントロールが描画する際に都度読み込むようにすることにします
555デフォルトの名無しさん (ワッチョイ 55e4-uikQ)
2021/06/06(日) 18:25:06.49ID:qxB2AhqX0 >>554
良い悪いは置いておいて、とりあえずファイル郡をまとめて読み込んでおくのが
目的で、Bitmapで変換するとメモリを消費してしまうのならば、ファイルの内容を
Streamの配列に読み込んでおいて、表示するときにBitmapで変換するとか
そして表示するだけならばBitmap使わなくてもImageでStreamから読んで
DrawImageでよいんじゃないかなとか
良い悪いは置いておいて、とりあえずファイル郡をまとめて読み込んでおくのが
目的で、Bitmapで変換するとメモリを消費してしまうのならば、ファイルの内容を
Streamの配列に読み込んでおいて、表示するときにBitmapで変換するとか
そして表示するだけならばBitmap使わなくてもImageでStreamから読んで
DrawImageでよいんじゃないかなとか
556デフォルトの名無しさん (ワッチョイ 55ad-wkOw)
2021/06/06(日) 18:34:20.40ID:SkRnwEhy0 無駄
557デフォルトの名無しさん (ワッチョイ ca79-62sI)
2021/06/08(火) 10:18:44.68ID:f9CCCXBt0 要するにサムネ表示したいんだろ
SSDなら1万ファイルの読み込みにもそんな時間掛からんし
ファイルをインデクス化して画面に出る部分だけ都度読み込んで描画すればいい
グリッドビューなんて必要かね
SSDなら1万ファイルの読み込みにもそんな時間掛からんし
ファイルをインデクス化して画面に出る部分だけ都度読み込んで描画すればいい
グリッドビューなんて必要かね
558デフォルトの名無しさん (ワッチョイ 2d24-p9zx)
2021/06/10(木) 16:49:33.11ID:r3+xqCr00 仮想化すればいいだけの話じゃん
何兆個のファイルがあろうとどうせ表示される項目は多くても数十なんだからスクロール位置などから表示すべきファイルだけサムネ表示すればいい
何兆個のファイルがあろうとどうせ表示される項目は多くても数十なんだからスクロール位置などから表示すべきファイルだけサムネ表示すればいい
559デフォルトの名無しさん (ワッチョイ 2324-nisE)
2021/06/11(金) 13:38:09.74ID:SXyLlFHz0 日本語の変数名使えるのに記号の変数名はダメなのかよ
競馬関係のアプリ開発受注したから予想記号の変数名として分かりやすく記号使いたいのに
競馬関係のアプリ開発受注したから予想記号の変数名として分かりやすく記号使いたいのに
560デフォルトの名無しさん (ワッチョイ 6393-jy7w)
2021/06/11(金) 17:10:30.00ID:Ugg65Q0l0 記号で分かりやすくとか頭おかしいんじゃないの?
561デフォルトの名無しさん (テテンテンテン MM7f-Nnf8)
2021/06/11(金) 19:23:13.76ID:jsNxLdjOM enumの値とかならまあわからなくもないかな
enum 予想記号 {◎, ○, ▲, △, ☆, ☓};
var 予想 = ◎;
https://umasiru.com/wp-content/uploads/2019/03/IMG_4633-2.jpg
enum 予想記号 {◎, ○, ▲, △, ☆, ☓};
var 予想 = ◎;
https://umasiru.com/wp-content/uploads/2019/03/IMG_4633-2.jpg
562デフォルトの名無しさん (ワッチョイ 93ad-3b/b)
2021/06/11(金) 19:36:06.84ID:W4vbuE8s0 var ◎ = △;
563デフォルトの名無しさん (ワッチョイ 7361-jBIW)
2021/06/11(金) 19:51:40.71ID:oDFfys8F0 何か競馬のあれを連想する
564デフォルトの名無しさん (スップ Sddf-zwXB)
2021/06/29(火) 12:33:01.69ID:Q5UZxny0d フォームを開いてその画面での処理中に
Form fs = new FormA;
try{
fs.ShowDialog(); ←ここ
}
catch{}
ここのところでハンドルされてないエラーがでて止まります
FormAでの例外処理などには一切ひっかからず
この場合解決の道筋はどこからでしょうか
ちなみにFormAではwebview2でオフィス365のウェブ版エクセルの新規作成を開こうとするとエラーになります
ワードではでないのですが
ここででるエラーは、System.Runtime.interior services.COMEException
0x8007139Fです
Form fs = new FormA;
try{
fs.ShowDialog(); ←ここ
}
catch{}
ここのところでハンドルされてないエラーがでて止まります
FormAでの例外処理などには一切ひっかからず
この場合解決の道筋はどこからでしょうか
ちなみにFormAではwebview2でオフィス365のウェブ版エクセルの新規作成を開こうとするとエラーになります
ワードではでないのですが
ここででるエラーは、System.Runtime.interior services.COMEException
0x8007139Fです
565デフォルトの名無しさん (ワッチョイ 7fda-LjEn)
2021/06/29(火) 19:49:17.93ID:Fhu3lWMd0 >>564
そのエラーコードでggr
そのエラーコードでggr
566デフォルトの名無しさん (テテンテンテン MM4f-wfqF)
2021/06/29(火) 20:27:18.03ID:rWI2BDyVM >>564
まず意味が分からんけどFormなの?Dialogなの?
まず意味が分からんけどFormなの?Dialogなの?
567デフォルトの名無しさん (スップ Sddf-zwXB)
2021/06/29(火) 20:55:15.95ID:Q5UZxny0d568デフォルトの名無しさん (テテンテンテン MM4f-wfqF)
2021/06/29(火) 21:01:59.16ID:rWI2BDyVM それ以前の根本的な問題があるのだろう
君には無理とは言わないがしばらく距離を置こう
君には無理とは言わないがしばらく距離を置こう
569デフォルトの名無しさん (ワッチョイ 3f6a-wfqF)
2021/06/29(火) 21:47:21.44ID:88YgLK/80 変な所でフォーム表示しようとしてんじゃね
そのコードだけじゃなくてメソッドごと見せてみ
そのコードだけじゃなくてメソッドごと見せてみ
570デフォルトの名無しさん (スップ Sddf-zwXB)
2021/06/30(水) 00:22:51.11ID:Fi37N+TOd >>569
FormAにはwebview2を配置していて、ブラウジングさせています
通常のサイト閲覧は何も問題ないのですが、ブラウザ上でエクセルが開けるoffice365を使用中、新規作成で開くときだけ呼び出し元のフォーム(上でこことしたところ)で停止します
既存のエクセルファイルなんかはFormA上のwebview2できちんと開けているのですが
なので、自分で書いた特定のメソッド中のエラーではなく、ページ遷移中に停止し、呼び出し元のShowdialogのところに戻ってハンドルエラーになってしまいます
FormAにはwebview2を配置していて、ブラウジングさせています
通常のサイト閲覧は何も問題ないのですが、ブラウザ上でエクセルが開けるoffice365を使用中、新規作成で開くときだけ呼び出し元のフォーム(上でこことしたところ)で停止します
既存のエクセルファイルなんかはFormA上のwebview2できちんと開けているのですが
なので、自分で書いた特定のメソッド中のエラーではなく、ページ遷移中に停止し、呼び出し元のShowdialogのところに戻ってハンドルエラーになってしまいます
571デフォルトの名無しさん (ワッチョイ 0f24-Z7qm)
2021/06/30(水) 00:39:45.90ID:4AL6ulTf0 再現する最小コードを作る
それでも不明ならその最小コードを公開して質問
それでも不明ならその最小コードを公開して質問
572デフォルトの名無しさん (ラクッペペ MMc6-RqJL)
2021/07/03(土) 03:25:24.72ID:ez5RskFXM ゲイツが収入マイナス7兆円ぐらいで苦しんでる。
c# プログラマから金を集めて、ゲイツに寄付するべきだと思う。
損失の一部 5兆円ほどc#プログラマから強制的に集めたい。国内に5万人ぐらいc#プログラマはいるから、1人1億ぐらい払えばいい。
土地とか家を売ればこんぐらい払えると思う。
払えないひとは肝臓とか売ればいい。
c# プログラマから金を集めて、ゲイツに寄付するべきだと思う。
損失の一部 5兆円ほどc#プログラマから強制的に集めたい。国内に5万人ぐらいc#プログラマはいるから、1人1億ぐらい払えばいい。
土地とか家を売ればこんぐらい払えると思う。
払えないひとは肝臓とか売ればいい。
573デフォルトの名無しさん (ワッチョイ a3b5-U8JP)
2021/07/03(土) 05:01:54.92ID:DAcib8Yu0 >>572
では早速言い出しっぺのあなた様から肝臓を差し出して下さい
では早速言い出しっぺのあなた様から肝臓を差し出して下さい
574デフォルトの名無しさん (ワッチョイ 27ad-Is9n)
2021/07/03(土) 06:04:33.61ID:+HNBKtJi0 では血をとらずに肝臓だけ取り出してください
575デフォルトの名無しさん (テテンテンテン MMc6-jDGG)
2021/07/03(土) 09:59:13.80ID:gTgAsOHbM 何そのハムレット
576デフォルトの名無しさん (ワッチョイ deda-BgM4)
2021/07/03(土) 10:22:53.43ID:ZeViGhZj0 アンキモ以下の脂肪肝なら処分料が欲しいな
577デフォルトの名無しさん (アウアウウー Sacf-jDGG)
2021/07/03(土) 11:22:03.96ID:fanuEOjba ヴェニスの商人では?
578デフォルトの名無しさん (ワッチョイ 6f54-SLQ7)
2021/07/05(月) 15:24:59.38ID:ZSz/R5WI0 DBから取得した重複なしの文字列List (要素数約4000) をComboBoxのDataSourceにセットする処理が、
約900ms〜1100msかかり、その間Formが固まるのですが、どうすれば固まるのを回避できるでしょうか。
A5M2でSELECTクエリの所要時間を見ると、だいたい700ms〜900ms台で、ここは改善のしようがなさそうです。
約900ms〜1100msかかり、その間Formが固まるのですが、どうすれば固まるのを回避できるでしょうか。
A5M2でSELECTクエリの所要時間を見ると、だいたい700ms〜900ms台で、ここは改善のしようがなさそうです。
579デフォルトの名無しさん (ワッチョイ 8e7c-BDhO)
2021/07/05(月) 15:45:29.72ID:5mYpWHh80 ComboBoxで4000の中から選ぶのは大変そうだな
DataSourceに設定する前後にComboBox::BeginUpdate/EndUpdateを呼べば多少は改善すると思う
それ以上はComboBoxじゃ無理じゃないかな 仮想モードもないし
DataSourceに設定する前後にComboBox::BeginUpdate/EndUpdateを呼べば多少は改善すると思う
それ以上はComboBoxじゃ無理じゃないかな 仮想モードもないし
580デフォルトの名無しさん (ワッチョイ 7f7c-Pyw0)
2021/07/05(月) 16:04:21.63ID:yitPGA0i0 やばそう
581デフォルトの名無しさん (ワッチョイ 4a01-J3mH)
2021/07/05(月) 16:35:24.72ID:lQZs6uo50 >>578
DBからデータ取得する処理は非同期に
DBからデータ取得する処理は非同期に
582デフォルトの名無しさん (ワッチョイ 8ae4-06wU)
2021/07/05(月) 16:53:08.67ID:S2aqSQgd0583デフォルトの名無しさん (ワッチョイ 8e2d-NaZp)
2021/07/05(月) 17:11:11.76ID:ynDVyPDO0 awaitしとけばUIスレッドに戻ってくるからInvoke要らんだろ
584578 (ワッチョイ 6f54-SLQ7)
2021/07/05(月) 17:14:42.74ID:ZSz/R5WI0 みなさんありがとうございます。
BeginUpdateとEndUpdateで20〜40msほど早くなりました。
現状、DBからの取得部分は別スレッドにしています。
ただし、フォーム表示時に、
@ComboBox の DataSource に List をセット。
A別の個所で設定した値で、ComboBox.SelectedItemを決定。
BComboBox.SelectedItem に応じて、それに対応するデータを DataGridView に表示。
という処理をしているので、結局ComboBoxへのDataSourceセット待ちになります。
むしろUIと同じスレッドでデータ取得すればスレッド切り替え処理がなくなって微妙に高速化出来るんじゃ?と思ってます。
BeginUpdateとEndUpdateで20〜40msほど早くなりました。
現状、DBからの取得部分は別スレッドにしています。
ただし、フォーム表示時に、
@ComboBox の DataSource に List をセット。
A別の個所で設定した値で、ComboBox.SelectedItemを決定。
BComboBox.SelectedItem に応じて、それに対応するデータを DataGridView に表示。
という処理をしているので、結局ComboBoxへのDataSourceセット待ちになります。
むしろUIと同じスレッドでデータ取得すればスレッド切り替え処理がなくなって微妙に高速化出来るんじゃ?と思ってます。
585578 (ワッチョイ 6f54-SLQ7)
2021/07/05(月) 17:33:32.24ID:ZSz/R5WI0 データ取得をUIスレッドで行ってみましたが、別スレッドでしたケースと比較して、実行するたびに優劣変わる程度でした。
これ以上の改善は無理そうなのでいったん諦めます。
これ以上の改善は無理そうなのでいったん諦めます。
586デフォルトの名無しさん (ワッチョイ 4a01-J3mH)
2021/07/05(月) 17:41:30.27ID:lQZs6uo50 Formが固まるのを回避したいってのは高速化したいということだったのか・・・
ま、がんばって
ま、がんばって
587デフォルトの名無しさん (ワッチョイ 6b01-Q9JX)
2021/07/05(月) 17:41:33.62ID:ykFrWqkT0 >>578
転送時に圧縮かけたら高速化するんじゃね
構成わからんからあてずっぽうでいうけど
DBサーバと近いWEB鯖のPHPでデータ一覧取得してJSONとかで転送(要するにPHPでAPI作成)
サーバの設定等でHTTP圧縮をON
圧縮かかってるから転送そのものが高速化される
どうやって圧縮かけるかは他にも色々やり方あるだろうけどね
LAN内に全てそろってる(例えば同一PC内)としてもかなり速くなるはずだよ
クエリで700msってのが気になるけど時間かかりすぎじゃないかな
Explainみた?
プロファイラはどう?昔はEQATEC Profiler使ってたけど今は何がいいんだろうね
どこにどれぐらいの時間がかかってるかわからないと理論値と比較できない
初見の感想は4000件程度で700msもかかってるのが気になる
応答だけ?それとも結果の羅列まで込みの時間かな
クラサバでそんなにかかる処理ってあまりないと思う
転送時に圧縮かけたら高速化するんじゃね
構成わからんからあてずっぽうでいうけど
DBサーバと近いWEB鯖のPHPでデータ一覧取得してJSONとかで転送(要するにPHPでAPI作成)
サーバの設定等でHTTP圧縮をON
圧縮かかってるから転送そのものが高速化される
どうやって圧縮かけるかは他にも色々やり方あるだろうけどね
LAN内に全てそろってる(例えば同一PC内)としてもかなり速くなるはずだよ
クエリで700msってのが気になるけど時間かかりすぎじゃないかな
Explainみた?
プロファイラはどう?昔はEQATEC Profiler使ってたけど今は何がいいんだろうね
どこにどれぐらいの時間がかかってるかわからないと理論値と比較できない
初見の感想は4000件程度で700msもかかってるのが気になる
応答だけ?それとも結果の羅列まで込みの時間かな
クラサバでそんなにかかる処理ってあまりないと思う
588デフォルトの名無しさん (ワッチョイ 6b01-Q9JX)
2021/07/05(月) 17:46:44.69ID:ykFrWqkT0 そもそも一瞬で取得すれば固まらないからね
あとはUIに先回りして裏で取得するとか、DB側でキャッシュするとか、小出しにしていくとか・・・
まぁ、一番簡単なのは画面にプログレスバー出してめっちゃ高速に処理してる風を装う事とかだけど
ただ、何も知らずに直観でいうと100msは切るはず
あとはUIに先回りして裏で取得するとか、DB側でキャッシュするとか、小出しにしていくとか・・・
まぁ、一番簡単なのは画面にプログレスバー出してめっちゃ高速に処理してる風を装う事とかだけど
ただ、何も知らずに直観でいうと100msは切るはず
589デフォルトの名無しさん (エアペラ SDd6-fsCC)
2021/07/05(月) 17:58:05.85ID:7JzKdw7cD 実処理時間と言うより、
取得中に割り込み入れないと固まったように見えるってだけの話では
取得中に割り込み入れないと固まったように見えるってだけの話では
590デフォルトの名無しさん (ワッチョイ 8e2d-NaZp)
2021/07/05(月) 18:09:58.95ID:ynDVyPDO0591デフォルトの名無しさん (アウアウウー Sacf-US9C)
2021/07/05(月) 19:11:56.65ID:IA8ZeXCsa たぶん「犯人」はComboBoxだろうが一応問題の切り分けが必要だと思って
public Form1()
{
InitializeComponent();
var asm = Assembly.GetAssembly(typeof(Form));
var bl = new BindingList<Type>();
foreach (var item in asm.GetTypes()) bl.Add(item);
var sw = Stopwatch.StartNew();
comboBox1.DisplayMember = "Name";
comboBox1.DataSource = bl;
Console.WriteLine($"Time = {sw.ElapsedMilliseconds} ms, Number of Items = {bl.Count}");
}
こんなコードを書いてみた。10年前のポンコツPCで実行してるが約2400個のアイテムをぶち込むのに
デバッグモードでも10ms程度の時間しか掛からない。
つまり「犯人」はComboBoxじゃないんじゃないの?知らんけど。
public Form1()
{
InitializeComponent();
var asm = Assembly.GetAssembly(typeof(Form));
var bl = new BindingList<Type>();
foreach (var item in asm.GetTypes()) bl.Add(item);
var sw = Stopwatch.StartNew();
comboBox1.DisplayMember = "Name";
comboBox1.DataSource = bl;
Console.WriteLine($"Time = {sw.ElapsedMilliseconds} ms, Number of Items = {bl.Count}");
}
こんなコードを書いてみた。10年前のポンコツPCで実行してるが約2400個のアイテムをぶち込むのに
デバッグモードでも10ms程度の時間しか掛からない。
つまり「犯人」はComboBoxじゃないんじゃないの?知らんけど。
592デフォルトの名無しさん (ワッチョイ 8e2d-NaZp)
2021/07/05(月) 19:44:16.85ID:ynDVyPDO0593デフォルトの名無しさん (ワッチョイ ab2c-Ijop)
2021/07/06(火) 01:07:39.66ID:AJxevGXU0 DB の実行計画を見れば?
インデックスを使わずに、全件探索でもしてるのでは?
2分探索なら、2 ^ 10 = 1,024
2 ^ 12 = 4,096
つまり、12回探索するだけ
ミックの本でも読んだ方がよい
インデックスを使わずに、全件探索でもしてるのでは?
2分探索なら、2 ^ 10 = 1,024
2 ^ 12 = 4,096
つまり、12回探索するだけ
ミックの本でも読んだ方がよい
594デフォルトの名無しさん (アウアウウー Sacf-uurJ)
2021/07/06(火) 07:28:36.60ID:kC5iABNna >>593
その前にソートな
その前にソートな
595デフォルトの名無しさん (ワッチョイ 27ad-Is9n)
2021/07/06(火) 07:38:26.90ID:4w9diVqq0 何言ってんだこいつ
596デフォルトの名無しさん (テテンテンテン MMc6-rRq2)
2021/07/06(火) 07:47:40.70ID:Jcre+LWcM インデックス張ったら挿入や更新の度に毎回ソートしてるとでも思ってるんだろ
597デフォルトの名無しさん (ワッチョイ 3a33-S78d)
2021/07/06(火) 08:22:21.59ID:PbL+Rk1v0 全件探索なら1回探索するだけ♪
598デフォルトの名無しさん (ワッチョイ bb2f-Ijop)
2021/07/06(火) 08:54:22.76ID:4hP0mNbe0 約900ms〜1100msの処理のうち
クエリが700ms〜900ms台で、改善のしようがないっていってるんだから
それがホントなら速度的なものはどうしようもないと思うんだが
画面が固まる対策ならクエリを非同期に(正確にはUIスレッド以外で、か)しろで終わりだろ
クエリが700ms〜900ms台で、改善のしようがないっていってるんだから
それがホントなら速度的なものはどうしようもないと思うんだが
画面が固まる対策ならクエリを非同期に(正確にはUIスレッド以外で、か)しろで終わりだろ
599デフォルトの名無しさん (ブーイモ MMb6-Xiw8)
2021/07/06(火) 09:08:47.43ID:juTGPN6qM ルビおじに絡むおじさんはルビおじよりさらに無能だからな
600デフォルトの名無しさん (ワッチョイ 8662-FWAm)
2021/07/06(火) 11:25:26.74ID:J1QHRuI00 やったことないけど、コンボボックスも仮想化できるらしいから試してみたら?
データ取得を非同期に出来てるなら画面が固まることは無くなりそう
https://docs.microsoft.com/ja-jp/dotnet/desktop/wpf/advanced/optimizing-performance-controls?view=netframeworkdesktop-4.8#controls-that-implement-performance-features
データ取得を非同期に出来てるなら画面が固まることは無くなりそう
https://docs.microsoft.com/ja-jp/dotnet/desktop/wpf/advanced/optimizing-performance-controls?view=netframeworkdesktop-4.8#controls-that-implement-performance-features
601デフォルトの名無しさん (ワッチョイ 8e2d-NaZp)
2021/07/06(火) 11:36:28.26ID:azFxX9aU0602デフォルトの名無しさん (ワッチョイ 7f7c-Pyw0)
2021/07/06(火) 18:11:30.42ID:RaE3JhC/0 WinFormsのComboBoxに仮想モード追加する例ってありそうで無いな
603デフォルトの名無しさん (ワッチョイ a3b5-U8JP)
2021/07/06(火) 21:55:13.16ID:Rt0qzyHm0 じゃ俺がWinFormsのComboBoxを仮想化する知恵を貸そうか?
604デフォルトの名無しさん (ワッチョイ 27ad-Is9n)
2021/07/06(火) 22:04:24.92ID:4w9diVqq0 まああてにするな
605デフォルトの名無しさん (アウアウウー Sacf-US9C)
2021/07/06(火) 22:18:48.94ID:HsJYefQaa どうぞどうぞって言おうと準備してたのにw
606デフォルトの名無しさん (ワッチョイ 0ada-Cqho)
2021/07/07(水) 02:05:48.56ID:jIHjttY10 じゃあ代わりに言うか
「どうぞどうぞ」
「どうぞどうぞ」
607578 (ワッチョイ 6f54-SLQ7)
2021/07/07(水) 03:00:22.72ID:sX4an4wR0 みなさん本当にありがとうございます。
原因は、約4000の要素をDBから取り出す所要時間でした。
約60万レコード内の、文字列カラムのデータを、重複しないように、GROUP BYする処理が時間食ってました。
なので、該当の文字列カラムだけを重複なしで格納するキー一覧テーブルを作り、
データINSERT時に、キー一覧テーブルの既存レコードと一致しない文字列だけをキー一覧テーブルに追加するトリガー処理を作りました。
そして、ComboBox の DataSourceにはそのキー管理テーブルのデータをセットするようにして、表示所要時間を5〜6割短縮出来ました。
原因は、約4000の要素をDBから取り出す所要時間でした。
約60万レコード内の、文字列カラムのデータを、重複しないように、GROUP BYする処理が時間食ってました。
なので、該当の文字列カラムだけを重複なしで格納するキー一覧テーブルを作り、
データINSERT時に、キー一覧テーブルの既存レコードと一致しない文字列だけをキー一覧テーブルに追加するトリガー処理を作りました。
そして、ComboBox の DataSourceにはそのキー管理テーブルのデータをセットするようにして、表示所要時間を5〜6割短縮出来ました。
608デフォルトの名無しさん (テテンテンテン MMc6-rRq2)
2021/07/07(水) 06:50:16.04ID:oDfnQi3+M 高々60万レコードの group by に700msって遅くね?
DBMS 何使ってるのかわからんけどインデックス張るだけで良いような気もするが…
DBMS 何使ってるのかわからんけどインデックス張るだけで良いような気もするが…
609デフォルトの名無しさん (ワッチョイ 0aba-Sdyw)
2021/07/07(水) 07:38:37.09ID:F/xqoSBh0 マテリアライズドビュー作るとか
610デフォルトの名無しさん (ワッチョイ 8f02-kf3V)
2021/07/07(水) 10:41:15.77ID:qNxZ5hgE0 GROUP BY自体が遅いもんよ
SQLが悪いとインデックス使っても無視されてFULL検索になってしまう
SQLが悪いとインデックス使っても無視されてFULL検索になってしまう
611デフォルトの名無しさん (アウアウウー Sacf-US9C)
2021/07/07(水) 12:33:18.92ID:GxuaumQya それより結局ComboBoxは何の関係もなかったってことだよね?
つまりボトルネックがどこにあるのか計測して確認もせず思い込みで
ComboBoxが悪いとミスリードな質問をした。
ここは反省して欲しい。
つまりボトルネックがどこにあるのか計測して確認もせず思い込みで
ComboBoxが悪いとミスリードな質問をした。
ここは反省して欲しい。
612デフォルトの名無しさん (アウアウウー Sacf-uurJ)
2021/07/07(水) 12:57:56.68ID:urFk1IqDa >>611
やれやれ
やれやれ
613デフォルトの名無しさん (ワッチョイ 7f7c-Pyw0)
2021/07/07(水) 13:00:11.32ID:FuIb4wxP0 最初の質問で問題の処理に約900ms〜1100msかかっていてそのうちクエリの所要時間が700ms〜900ms台と書いていて、その上でクエリ以外の部分(約200ms)を改善したいという話だったから測ってないわけではないかと
クエリ部分は改善不可能と思い込んでたのはあるが
クエリ部分は改善不可能と思い込んでたのはあるが
614デフォルトの名無しさん (ワッチョイ a3b5-U8JP)
2021/07/07(水) 13:00:41.99ID:ylMxxyrU0 >>611は毎度お馴染みで皆さんご存知の、
ComboBoxに責のあるマイクロソフトの犬
ComboBoxに責のあるマイクロソフトの犬
615デフォルトの名無しさん (ワッチョイ 8662-FWAm)
2021/07/07(水) 15:16:07.20ID:Z3N+pbe10 最初に戻ると結局画面は固まってなかったってことなんだろうな
これが一番のミスリード
これが一番のミスリード
616デフォルトの名無しさん (ワッチョイ 6b01-Q9JX)
2021/07/07(水) 15:26:49.85ID:jKQg8TjQ0 FormのLoadで何も表示されないまま1秒以上かかるとかなり固まった感は強い
だからスプラッシュやプログレスバーというのは非常に大事
これがあるだけでクレーム率はかなり下がる
速度最適化というのは実際のレスポンスやスループットだけではなくて
体感速度も最適化するべきなんだ
だからスプラッシュやプログレスバーというのは非常に大事
これがあるだけでクレーム率はかなり下がる
速度最適化というのは実際のレスポンスやスループットだけではなくて
体感速度も最適化するべきなんだ
617デフォルトの名無しさん (ワッチョイ bb2f-Ijop)
2021/07/07(水) 15:38:40.22ID:O4oUzSnJ0 いや、クエリの間は固まってたんじゃね
そういう意味ではコンボボックスは無関係だな
そういう意味ではコンボボックスは無関係だな
618デフォルトの名無しさん (ワッチョイ 8662-FWAm)
2021/07/07(水) 19:17:38.62ID:Z3N+pbe10 別スレッドで取得してるって言ってんのに?
619デフォルトの名無しさん (ワッチョイ 4a01-J3mH)
2021/07/07(水) 20:02:39.26ID:vUBZA2na0 別スレッドの処理終了を同期で待ってたら固まるよね
620デフォルトの名無しさん (スップ Sdaa-gkPs)
2021/07/07(水) 20:04:38.68ID:iooPCaard 別スレッドでの取得結果を待たずにコンボボックスが表示できるとは知らんかった
621デフォルトの名無しさん (ワッチョイ 7f09-TMbC)
2021/07/07(水) 20:05:37.60ID:UGIg3KO/0 空のはできるんじゃないの?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】日本産牛肉の対中国輸出再開協議が中止 [おっさん友の会★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★2 [BFU★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★3 [BFU★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 [ぐれ★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★4 [ぐれ★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★3 [ぐれ★]
- 【悲報】自民党「聞いてないよー」 [616817505]
- 【実況】博衣こよりのえちえち雑談🧪★2
- 高市早苗って戦後最悪の総理大臣なのでは🤔? [929293504]
- 【高市速報】トヨタ社長、MAGA帽子をかぶって登場し世界を震撼させる [462275543]
- 竹田天皇「ホタテ輸入禁止されても中国以外誰も困らない。中国以外に売ればいいんだから」高市 [931948549]
- 【実況】博衣こよりのえちえち雑談🧪
