X



C#, C♯, C#相談室 Part95

レス数が950を超えています。1000を超えると書き込みができなくなります。
2017/10/17(火) 00:41:22.60ID:JxIRdCj70
■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part94
http://mevius.2ch.net/test/read.cgi/tech/1492843013/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2020/02/17(月) 19:55:08.69ID:Nkb49BjE0
議論が発散しててよくわかんないな。
何が何なの?全員、アブストを書いたらどうだ?
2020/02/17(月) 19:56:33.16ID:iNM+ZupGM
>>866
論点をずらそうとしてるね

クソみたいなUI操作オレオレマクロよりUI非依存のPSのが低コストで品質がいいねというだけの話だろ
例としてPSを出したが別になんだっていいよ

最も大きな問題はインタプリタの方ではなくUI操作でオートメーションサポートするというバカバカしい発想の方な
オートメーションをサポートするならUI非依存のAPIを整備しろ
それが正しい道だ
2020/02/17(月) 20:21:59.64ID:YeNwIpPfd
話がまとまってないのに余談とか言っちゃって相手もそれに乗っかちゃって…
これを繰り返すからいつまで経っても収束しないし元の議題が何だったかわかりづらくなる
2020/02/17(月) 20:24:09.75ID:afVseoTo0
>>860
>>868訂正、結果的に>>869は間違いなのでよろしく
俺の見解では全部simulationになる。


確認してみたら、PerformClickは同期イベントだった。
呼び出し履歴見る限り、Button.PerformClick->Button.Onclick->Control.OnClick->イベントハンドラ なので、
OnClickもほぼ確実に同期だと思われる。
だから呼称は全て simulation の方が妥当となる。
イベントキューとかは全く関係なくなるので、該当部分の869の話は間違いということでよろしく。

同期イベントなのは.NETの癌だと思っていたが、
この点に関しては同期イベントの方がプログラミングしやすい、というのは事実だな。
(俺の想定の非同期イベントだと俺のコードは動かないはずなのに気づき、確認したところ、同期だったorz)
2020/02/17(月) 20:40:15.99ID:afVseoTo0
>>871
> 論点をずらそうとしてるね
お前がだろ。

> UI操作でオートメーションサポートするというバカバカしい発想の方な
GUIの自動化ならGUIのエミュレーションが俺的に第一選択肢だ。
これについては既に>>842で言ったとおり、君が気に入らないのはどうぞご自由にだが、
最近話題のSeleniumでも同様なのだから、君が思うほど糞でもないんだよ。
もっとも汎用的で、もっともカッコ悪いが、どんな馬鹿でも使えるソリューションだ。
そして、やる気になればPerlやPythonと組み合わせて自由自在でもある。
ソースコード戦略にも、テストにも問題がない。ならこれで決まりでいい。
2020/02/17(月) 21:41:26.92ID:zVw4OscHM
>>874
Selenium系はAPIを提供してないサイトのオートメーションをユーザーが苦労して泣く泣く自動化したい場合やテスト自動化で使うツールな
俺らが今議論してるのはユーザー目線じゃなくて提供者側なんだよ
提供者側がAPI実装を放棄してGUI操作をサポートするなど馬鹿なことだ
ユーザーに苦労を押しつけてはいけない
876デフォルトの名無しさん (アウアウウー Sac3-+wK4)
垢版 |
2020/02/17(月) 21:45:10.71ID:HH3Dtgxka
>>863
複数のボタンを全部クリックした時の動作、なんていう下らない機能を
モデルに持たせることが正当化されるケースってむしろあんまりないと思うよw

ぱっと思いつくのは、ボタンABCDEをクリックした時の処理に共通する部分
(例えばファイルのopen/closeのような前処理後処理)があって、まとめてやる場合には
大幅な最適化が可能な場合。

この人本当にプログラマかな。
877デフォルトの名無しさん (アウアウウー Sac3-+wK4)
垢版 |
2020/02/17(月) 21:49:38.11ID:HH3Dtgxka
>>870
白鳥はすべて白い(PerformClickなんて100%イラネ)という人がいるので、
いやいや世界には黒い白鳥もいるんだよ、とまあそういう話
2020/02/17(月) 22:01:31.09ID:zVw4OscHM
>>876
その糞設計だと要件変化ですぐにコードが汚染されるだろうなぁ
処理は今までどおり実行したいが特定のボタンだけ画面から削除したくなったせいで謎のHiddenボタンを置いたり
処理の結果で後続の処理を分岐したくなったせいで不自然な制御フラグフィールドが乱立したり
画面のデザイン変えただけなのになぜか処理の実行順序が変わったり
少し想像しただけでトラブルの兆しがするするでてくる
こういう発想はアマチュアらしくて微笑ましいけど業務で見かけたら説教しなきゃいけないぐらいだ
2020/02/17(月) 22:05:59.99ID:dzSo2/zk0
>>863
各ボタンに割り当ててるコマンドをcomposite Commandで繋いで終わりじゃない?
880デフォルトの名無しさん (アウアウウー Sac3-+wK4)
垢版 |
2020/02/17(月) 22:08:44.55ID:HH3Dtgxka
>>878
よく分からない妄想ワロタw
意味が分からないよ

>要件変化ですぐにコードが汚染される
まさにその通りw
君の設計方針だと必然的にそうなる。
881デフォルトの名無しさん (アウアウウー Sac3-+wK4)
垢版 |
2020/02/17(月) 22:09:55.34ID:HH3Dtgxka
どーでもいい非必然的な機能をモデルに持たせることは、
UIにベタベタ処理を実装するのと同じ糞設計ですw
882デフォルトの名無しさん (アウアウウー Sac3-+wK4)
垢版 |
2020/02/17(月) 22:28:58.59ID:HH3Dtgxka
一応言い訳しておくけど、>>876に書いたみたいに最適化の恩恵なんかなくても
複数の処理をまとめて一度にやるメソッドをモデルが持つことが自然なケースはもちろん存在すると思う。

っでも俺が言っているのは「黒い白鳥もいる」だからね。
「白鳥は全部白いは間違っている」と言ってるだけだから
2020/02/17(月) 22:56:12.88ID:zVw4OscHM
>>880
お前のやり方はではすぐにコードが汚くなるって言ってんの
俺のやり方はメンテナンスしやすいモデルを採用してるからコードの品質が維持される
2020/02/17(月) 23:01:51.58ID:zVw4OscHM
>>882
まとめて処理をする機能が要件にあるならそれをモデルに実装するのが王道で自然な方法
お前はそれをボタンクリックなどという大道芸的な方法で実装しようとしてる異端
2020/02/17(月) 23:03:21.26ID:zVw4OscHM
>>881
そうだ
だからまとめて処理をするという最小限の機能をモデルに実装せよと言ってる
ボタンクリックなどという余計なお遊びは入れなくていい
2020/02/17(月) 23:09:15.69ID:HQMlSi3n0
こない未来を予測してる奴はバカ
絶対失敗する
しかも、最悪の形で
2020/02/17(月) 23:18:49.77ID:43uLIzGsM
>>886
来るかもしれない未来を考えないのも同じぐらい馬鹿だな
そして未来がわからんなら余計な拡張性を導入するのではなくコードを容易に改修できるようにシンプルに保つことが重要
つまりシンプルなモデルにやりたいことを素直に書けばそれでいい
それで済むものをわざわざボタンクリックなんていうやらなくていい遠回りな方法で実装するのは後で困る馬鹿の典型例
2020/02/18(火) 00:50:17.87ID:/0BlMKgF0
>>875
だから君はちょっと意識が高すぎるんだよ。

自動化したいユーザーは、今やったのと同じ操作を100個のファイルに適用したいとかだ。
「ログに出てるコマンドをコピペすれば今やった操作を自動化出来ます」との情報を得て、ログを見たら、

CONTROL TextBox filename my000.jpg
CONTROL Button file_load Click
CONTROL Button filter_A Click
CONTROL Button file_save Click

となってたら、まともなプログラマなら適当にスクリプト書いて10分後には完了してる。
そこを「APIを調べてPowerShellでスクリプトを書いてください」だと困る奴の方が多いと思うが。
何でオレオレアプリのAPIをユーザーが一々調べないといけないんだよ?調べるだけで10分かかる。

方法は何でもよく、勿論APIでもいいんだけど、ユーザーは手っ取り早く今の処理を100個のファイルに展開したいだけ。
それには歴史的にも今も「テキストファイル内にコマンド羅列(=つまりスクリプト)」という方法が用いられている。
これが一番分かりやすいからだよ。
PowerShellの「.NETアプリをインスタンス化して内部関数を直接呼ぶ」というのは発想としては面白いけど、
それが分かりやすいわけでもなく、汎用性があるわけでもなく、使いやすいわけでもない。

まあもうこれは堂々巡りだから終わりでいいが、
君の意見が正しければ、今後は全てのアプリでAPIが公開されていき、MS謹製のUIAutomationなんてゴミになることになる。
俺はそんなことにはならないと思うけど。
2020/02/18(火) 00:57:57.34ID:GPdxsdEp0
>>888
だからよ
1処理用の処理を連続で100回動かしたら確認ダイアログが100回出るだろーが
バカかテメーは
2020/02/18(火) 06:52:39.11ID:fxDAJd/Ea
言い合いになるなら
構わなきゃいいのになあw
2020/02/18(火) 07:50:57.99ID:LkwV7cyFM
>>888
意識は高くない普通の感覚だよ
当たり前のことを当たり前にやるだけだ
モデルに処理を書いてビューに紐付けるってごくごく自然なコードだろ

しかもそれすればほとんどタダでオートメーションサポート機能が手にはいるんだぞ
ボタンクリックとかわざわざ苦労してトラブルを持ち込んでくる意味わからねえわ
マゾなのか
2020/02/18(火) 07:59:37.22ID:ZOlvaa/TH
>>889
その程度の回避策が思いつかないようなバカがいるとは
2020/02/18(火) 08:20:17.01ID:LkwV7cyFM
>>888
ちなみにこのマクロでわかりやすいと思うのはお前だけだぞ
普通の人だったら
オートメーションなのなんでコントロールを操らないといけないんだ意味わからん
ボタンとかテキストとか書かれても何やってるか意味わからん
各行の関連性が意味わからん
操作してるインスタンスはどのフォームだよ意味わからん
などなど大混乱してしまう

ユーザーが見てわかりやすいレコードログってのは↓こういうものな
$model = $MyAppHost.Resolve("MyModel")
$model.FileName = "..."
$model.LoadFile()
$model.FilterA()
$model.SaveFile()

この処理をたとえばカレントディレクトリ全体に適用したいなーってユーザーが思ったらls | foreachでパイプするだけ
お前の大好きなコード生成みたいなバカバカしい無駄な苦労をしなくて済む
2020/02/18(火) 08:23:55.17ID:didWPBin0
>>892
そこ工夫が必要ならこんなくだらんメソッド呼ばんわw
2020/02/18(火) 08:43:22.08ID:LkwV7cyFM
>>888
例えばさぁ
お前のオレオレうんこマクロでファイルが存在しなかった場合のハンドリング処理はどうやって書くつもりなんだ?
ファイルの形式が間違ってた場合は?
セーブに失敗したときどうする?
指定したディレクトリツリーのファイルすべて処理したいときはどう書くんだ?
2020/02/18(火) 21:08:13.91ID:U5rnBvKT0
直のWINAPI(というか多分アンマネージ)が混ざる動作だとDebugとReleaseで動き変わること割りとあってめんどくさいな
2020/02/19(水) 07:47:22.74ID:bztKe272M
>>896
単なるお前のバグだろ
898デフォルトの名無しさん (ワイーワ2 FFdf-IPX/)
垢版 |
2020/02/19(水) 11:28:45.13ID:cGULNOoWF
WINAPIのはDebugだと0埋めされるんだろ
そりゃ動作変わるって(バグがあればω)
2020/02/19(水) 14:38:26.03ID:xNHctau2M
0じゃなく埋められる数値は何種類かある
デバッグリリースで挙動変わるのはほぼ確実にメモリ周りでなんかやらかしてるね
2020/02/19(水) 21:10:46.74ID:1xSUjqPH0
>>893
俺はPowerShell知らんから推測文法で勝手に書くと
function apply_filterA(filename){ // (A)
echo CONTROL TextBox filename $finename
echo CONTROL Button file_load Click
echo CONTROL Button filter_A Click
echo CONTROL Button file_save Click
}
ls | foreach apply_filter

とかか? まあ雰囲気は分かるだろ。どうしてもオブジェクト文法で書きたければ、property使える言語なら

ref class OreOreWrapper { // (B)
property String^ Filename {
void set(String^ filename){echo("CONTROL TextBox filename "+finename);}
}
} model;

とかかな。
俺が用意するのは公式UIAutomationでしか無い。
君は逆に何故UIAutomationがああなのか、また、
何故PowerShellなんて全く流行ってないのか、理解した方がいい。
既に言ったがコード戦略的には他にも色々理由はあるのだけど、それ以前に、
そもそも外面仕様的にも、.NET縛りになる糞APIを提供する意味なんて上記の通り、まるでないだろ。
Unixフォーマット(テキストと標準入出力)に揃えるのは、異様なほど自由度を提供する物なんだよ。
だからみんなそこから離れられない。
2020/02/19(水) 21:11:45.68ID:1xSUjqPH0
君が間違えているのは、君が出来ているつもりになっている「レイヤー設計」だ。(>>819)
君の中ではPowerShell(中レベル)/アプリの2層しかないから
中レベルAPIをアプリ自体に求め、それで汎用性が全くなくなっている。
そうではなく、各言語向け中→低レベル変換ライブラリ(上記A,B等)を噛ませば、
各言語(中レベル)/各言語向けレベル変換ライブラリ/アプリ(低レベル)となり、
全ての言語で中レベルでも低レベルでも書ける状況になるだろ。

俺の好きなフォーマットで書かせろ、というのはいいが、それはAPIに直接求めるものではない。
どうせどんなAPI/フォーマットを提供したところで、全員が満足する事なんて無いんだ。
なら、上記のように、単純な関数化/ラップでそれぞれのオレオレ超最高フォーマットが手に入るのなら、
それは素晴らしいAPIってことになるんだよ。
そして本件なんて、文句を言った方が恥ずかしくなるレベルなのは君でも分かるだろ。
2020/02/19(水) 22:47:18.69ID:Z9/2no0YM
>>900
まる一日以上かけてそれかよ
そんな汚いわかりにくいコードをありがたがるのはお前だけだぞ

さて>>895に答えるのに何日かかるかなw
2020/02/19(水) 22:52:36.17ID:Z9/2no0YM
>>901
ホント残念なやつだな
アプリの中にさらに層が別れてるに決まってんだろ
それぞれの層をスクリプティング用に公開することもほぼノーコストでできる
薄汚いオレオレラッパーを大量生産する苦痛とは無縁だ
そんなこた言わなくてもわかることなんだがわからなかったか
2020/02/19(水) 23:21:51.22ID:Z9/2no0YM
>>900
つうかな自由とハックを混同するな
そういうのは黒魔術的な方向に進化してあっという間にカオス化して行く
そんなものはだれもありがたがらない
製造元が頭の悪いマクロしか提供していないから泣く泣くラップ作業に着手するってんならまあ話はわかるが進んでやりたいことじゃねえわな
2020/02/19(水) 23:22:37.14ID:1xSUjqPH0
>>902
まあもう一々答える気はないんだけどな。
本当に問題になることを突かれた場合は改善に繋がるから有用なのだけど、
君のレベルではそれは無理だし、実際に今回も恥ずかしいことになってるだろ。

多分君が根本的に間違っているのは、バグをバグと認識できてないことだ。
既に言ったがUIを噛ませて動作が不安定になるのは、明確にバグなんだよ。
それはCPUが余りまくっている暇人環境なら再現しにくいだけで、
他アプリでCPUを取られている場合においてはユーザー環境でも普通に再現する。
つまりCPUロードが高い状況では不安定になるわけで、これは普通にバグだよ。

だから君はまずそのバグを直さないといけない。
そうすると>>850の認識をだいぶ修正出来るだろうさ。
2020/02/19(水) 23:24:13.74ID:Z9/2no0YM
>>905
答えられませんわかりませんって素直に言ったら?
潔さも時にはたいせつだよ
2020/02/19(水) 23:31:23.42ID:Z9/2no0YM
>>905
つか不安定ってとこを拠り所にしてるようだが
仮に完全に安定しててもUI操作ベース貧弱文法のオレオレマクロなんて積極的に使う理由にならんからな
UI非依存のAPIを優先して他に何もなくてどうしてもUI操作せざるを得ないとなったらそこで初めて使うか別のツールに移行するか検討すんだよ
そこんとこはやく理解したほうがいいぞ
同僚や取引先にボタン押すオレオレマクロ機能をドヤ顔で提案して赤っ恥をかく前に気づいたほうがいい
これ本当に君が心配だから言ってる
2020/02/19(水) 23:36:36.72ID:Z9/2no0YM
しかもな
もし仮に百万歩譲ってUI操作をサポートしなきゃならんとなったとしてもだ
そんなものはUIA、WinAppDriver、Seleniumに任せときゃいいんだよ
時間と金をかけて赤っ恥マクロを製造する必要はない
もうすでにゴミマクロの億万倍便利なライブラリがあるんだからそれつかいなよ
エンドユーザだってそっち使うよ当たり前だろ
2020/02/20(木) 00:55:48.08ID:FY8QkcoV0
>>905
正常系だけ動けばいいマクロだったら人間用のUIを触るでもなんとかなるよ。
異常系もハンドリングしなければならないなら、何が出てくるかの一覧もないような、ダイアログに書かれてることを理解しなくちゃいけないんだから、網羅するのはめちゃくちゃ大変だと思わないかな。

人間用には問題を自然言語で全体的な説明する必要があって、
外部プログラム用には事前定義されたメッセージで問題を端的かつ詳細に伝える必要があって、
両者はプロトコルが大きく異なるんだから、人間用に外部プログラム用の伝え方をしたり、もしくはその逆ってのはどう考えても筋が悪い。

外部プログラムに人間シミュレーターをやらせたり、
人間に外部プログラムシミュレーターをやらせたら、
余計なレイヤーが必要になってバグの温床になるだろ。
「バグはバグだろ」とか言ってたって品質は改善しないので、そもそもバグが生まれにくい構造にしておくのが当たり前。
設計からやったことないのかな?
2020/02/21(金) 23:28:13.08ID:UQ40Zz5M0
>>909
ではまず、
・君的超最高な異常系ハンドリング方式、>>893と同様にコードで、と
・現状やたらあるタスクランナー等のどれ一つにもそれが採用されてない理由
を聞こうか。
2020/02/22(土) 00:53:29.41ID:eCNgUA1qa
こういう返しをしてくるということは数日かけても本当に思いつかなかったんだなwww
2020/02/22(土) 08:29:38.27ID:lw7HhssO0
>>910
あなたは話を逸らす傾向にあるから、その前に、まず、
「自分のオレオレマクロでは正常系での動作しか考えられていなくて、
正常系で動かないのであれば、バグはバグなんだから修正する必要があると言っていた。
だが、異常系への対応までは考慮することができていなかった」
ということを暗に表明していることを認めてもらえるかな?
異論があるならどこが違うのか指摘してくれ。
2020/02/22(土) 10:09:00.65ID:hsz3eTB90
ガイジの相手をしているところが間違っているね
914デフォルトの名無しさん (アウウィフ FFe7-IPX/)
垢版 |
2020/02/22(土) 14:22:35.92ID:2qBDSHyDF
正常系と異常系がごちゃまぜで
どこが危なくてどこが危なくないのか全く区別がつかない
2020/02/22(土) 14:33:37.40ID:4D2R9AsT0
毎度毎度スレ違いどころか明後日の方向レスの応酬やっている連中は病院行け
2020/02/22(土) 14:53:22.79ID:qQaAG+8d0
漏れは、スクレイピングに、Ruby, Selenium WebDriver, Nokogiri を使う。
ブラウザの自動操作もできるし

ただ、各サイトの解析が大変。
特に、Ajax で動的に読み込むものは、読み込み前には存在しないから
2020/02/23(日) 21:04:42.65ID:9ZBd+yN40
ところでこれ、既存の他アプリを操作するって話なの?
自分の既存アプリを多アプリが操作するって話なの?
多アプリで操作されるアプリを設計するって話なの?
2020/03/09(月) 14:45:58.49ID:aNmrWQjka
こんな感じで

TestDataGridView.Columns.Add("Number", "No.");

TestDataGridView.Columns.Add("Item", "項目");

for (int i = 0; i < Max; i++) {

TestDataGridView.Rows.Add(1);

TestDataGridView["Number", i].Value = (i + 1).ToString();

TestDataGridView["Item", i].Value = "";

}

初期化して、TestDataGridView["Item", i].Valueに何らかを代入して作業を終えて

中身を消そうと

for (int i = 0; i < Max; i++) {

TestDataGridView["Item", i].Value = "";

}

を実行するとGCがバカバカ発生して滅茶遅いのですが、なんでですか?
2020/03/09(月) 15:04:37.10ID:306ybdW+0
GCがバカバカ発生したってのはどうやって確認したの?
遅い理由がGCにあるってどうやって確認したの?
2020/03/09(月) 15:07:43.02ID:aNmrWQjka
>>919
デバッグで起動して、右側の診断ツールのプロセスメモリのグラフに黄色のマークがどんどん現れたのです。
2020/03/09(月) 15:52:53.45ID:GI3THqg50
WinformsならSuspendLayout & ResumeRayout(true)で囲ってみては?
DataGridViewってItemsSourceに代入するとき以外は代入するたびに表示の更新されるよね、確か
2020/03/09(月) 16:45:24.00ID:aNmrWQjka
>>921
やってみましたが変わらずです。
11列×256行で最初の2列はそのままで以降の列に計測値と計算値を代入して、次の測定でクリアするのですが、一回目は瞬時クリアで2回目以降は20秒くらい待たされます。
自動調節などは入れていません。

今まで同様なソフト作っていて初めての事です。
2020/03/09(月) 17:12:18.14ID:cFIy8do/d
プロファイラでどこが時間くってるか見てみれば?
924デフォルトの名無しさん (ワイーワ2 FF3f-g6LZ)
垢版 |
2020/03/09(月) 18:10:16.08ID:T4gz2l9RF
何らかの代入してる方に問題ありそう
2020/03/09(月) 18:28:22.35ID:UntOhQUT0
>>922
ミニマムコード作って動かしてみれば
それでそんな動作になるのなら諦めるか改めてそのコード示して質問するか
一回目と2回目の動きが変わるとかGCが頻繁に動くとかちょっとありえないし
2020/03/09(月) 18:28:52.87ID:GI3THqg50
>>922
ちゃんと
TestDataGridView.SuspendLayout();
TestDataGridView.ResumeRayout(true);
って書いた?

これはコントロール毎にしか聞かないから、Form1のサスペンド呼び出しても子コントロールには効かない
2020/03/09(月) 19:15:42.50ID:GI3THqg50
TestDataGridView.SuspendLayout();
//ここにTestDataGridViewの処理を書く
TestDataGridView.ResumeRayout(true);

いずれにしても20秒も掛かるとなると他に原因ありそうだな
一応自分はFlowLayoutPanelに自作コントロールをListViewのように並べるというソフト作ってた時、
1000個以上のアイテムを一気に追加すると数秒ラグってたのがこの手法によってほぼ一瞬で表示されるようにはなったが
2020/03/09(月) 19:28:18.48ID:JH2CO7i+d
デバッガ表示見てるんだからプロファイラで問題箇所特定が一番早くて確実
その上で最小再現コード作ったり他の設定いじったり試行錯誤してみればいい

なんで便利な標準ツールを使わずに他の手法を進めるのか理解できない
2020/03/09(月) 21:38:17.90ID:aWxXRkAf0
>>926
for文の前後に入れました。
2020/03/09(月) 21:39:54.00ID:aWxXRkAf0
>>928
すまん、使いこなせないのだ。
2020/03/09(月) 21:50:06.25ID:aWxXRkAf0
>>929
Resumeの()にはtrueじゃなくて空でした。
駄目?
2020/03/09(月) 22:06:22.62ID:eHGFA/ZF0
trueを渡せば停止中にキューに溜まってたものを一括でレイアウトするから低負荷にレイアウトが出来るって仕組みだったはず
なのでtrue引数入れないとパフォーマンス上の恩恵は得られない
2020/03/10(火) 00:40:45.03ID:rLdwFfVF0
>>930
vs プロファイラでググればすぐ出てくる
どの関数がどれくらい処理時間くってるか全部出してくれる
何なら関数内のどの行がどれだけ処理時間かかってるかまでわかる
この点だけを調べるならマジで簡単だから一度試してみるといいよ
2020/03/10(火) 12:16:47.67ID:FjsT0ZiBa
true入れましたが駄目でした。
プロファイラ使ってみました。
1回目の状態です。
http://imgur.com/QRNwSP5.png
瞬時です。

2回目です。
http://imgur.com/cfzhpIi.png
時間かかってます。

セルに代入している時にGCが一杯発生してます。
http://imgur.com/IEzLFZa.png

使い方間違っているのかな?
935デフォルトの名無しさん (アウウィフ FF0f-g6LZ)
垢版 |
2020/03/10(火) 18:15:47.21ID:X+eVfRrsF
static な Main() の中で
await を使うと Main() に async が必要と言われ
Main() に async を付けると怒られました><
2020/03/10(火) 20:13:50.16ID:bus7JDt50
C#7.1(だっけ?)以降なら書けるから更新する
もしくはstatic async Task AsyncMain()みたいなのを挟む
2020/03/10(火) 20:16:20.56ID:M4Rwf6kV0
>>934
直接dataGridView触るとやたら遅くなるケースがあるから
データの追加削除等全部mainlistの方でやって、
こんな感じで更新する形に落ち着いたような 全然覚えてないような・・・

SortableBindingList<Model.hoge> sortableList = new SortableBindingList<Model.hoge>(Model.mainlist);
dataGridView1.DataSource = sortableList

C#も話題もよく分かってないから 見当違いだったらすまんね!
2020/03/10(火) 21:16:42.17ID:aFJ9tE+S0
>>937
ありがとう。
直接アクセスすると良くなさそうなんでlistでバインディング出来るか試そうとしてました。
明日、トライします。
MFCで少し書いていましたがC#だとめちゃくちゃ短いソースになるんで勉強します!
ハード周りはC++のDLLでやれそうで明るい未来になりそうです。
2020/03/10(火) 21:22:21.07ID:vi5fh4S80
DataGridViwのなんかのイベントで重い処理やってんじゃないのか
2020/03/10(火) 21:50:05.36ID:M4Rwf6kV0
>>938
SortableBindingListに関しては下記のページより、
https://docs.microsoft.com/ja-jp/previous-versions/dotnet/articles/ms993236(v=msdn.10)?redirectedfrom=MSDN
ぐぐって何番目かに出てくる、動物病院のページが参考になったよ 先生凄い

dataGridViewって利用者多いと思うんだけど、どれがスマートな利用方法かは調べにくいよね 頑張って!

>>939
詳しい解説や dataGridViewこう使うのが一番賢いぜ!って内容凄く聞いてみたい
941デフォルトの名無しさん (ワッチョイ 7957-LOeD)
垢版 |
2020/03/11(水) 01:54:34.80ID:zwwCe0yv0
https://dobon.net/vb/dotnet/datagridview/
2020/03/12(木) 22:19:30.41ID:hbFLurwA0
がんばって
2020/03/18(水) 17:22:22.56ID:rMJu+eWXM
autoScrollをtrueにしたPanel内で例えばcomboboxにフォーカスすると、スクロールバーが自動で上まで移動してしまいます。
それを解決するにはScrollToControlメソッドをoverrideしたPanelを作成すれば良いというところまではわかったのですが、
SplitContainer内のPanelの場合はどのようにすれば良いのかがわかりません。あまり頭が良くないので具体的なコードで教えていただけると助かります。
2020/03/18(水) 18:35:28.79ID:Mnonc2v70
>>943
SplitContainerのSplitterPanelはsealed classになっているからそっちで何とかしようとするとめんどくさそう
SplitterPanelの上にSizeとAnchor合わせた「ScrollToControlメソッドをoverrideしたPanel」を重ねるのが楽じゃない?
945デフォルトの名無しさん (アウアウウー Sa5d-TlPw)
垢版 |
2020/03/18(水) 18:37:11.63ID:i82q/1/Aa
>>943
正攻法でやるの面倒そうだから、その魔改造したPanelをSplitterPanelに入れて
Dock = Fillにしたら?

それにしても糞UIだねそれw
見えないComboBoxにフォーカスが当たっててマウスホイールに触っちゃったりしたら
いろいろイライラが募りそうw
2020/03/19(木) 11:38:19.13ID:iNMTXluDM
>>945-945
ありがとうございます。無事に実装できました。
2020/03/26(木) 14:02:01.81ID:WnIwPUvR0
これ同一人物で精神分裂病だろ
2020/03/26(木) 19:03:41.94ID:hr2wCIjAM
怖いことを言わないで
2020/03/27(金) 12:50:41.91ID:GP64i6UA0
実行モジュールをWindowsサーバーに常駐させてクライアントPCからのリクエストでサーバー上でコマンドを実行する
という仕組みに最適な.NETプロジェクトって何だと思いますか?
IIS建ててWebサービスかなと思うのですが1つのサービスのためにIIS建てるのは何か大袈裟だなと思いまして
よりモダンでイケてる仕組みがあったらお聞かせ頂きたいと
2020/03/27(金) 13:21:30.88ID:US1WE8+5M
常駐のための設定とか信頼性とか監視とか考えたら結局IISの方が手っ取り早くて楽
モダンでイケてるとか言い出したら今時WinサーバーかよとかオンプレかよとかAWSやGCPでKubernetes使えとかそういうそもそも論にしかならないのでナンセンス
951デフォルトの名無しさん (ワッチョイ 92ad-Lzc3)
垢版 |
2020/03/27(金) 13:27:10.68ID:vRdj9EFz0
検索してやったぞ
https://qiita.com/0829/items/5518256b348521ac358c

自分なら環境が許せはコンソールアプリ常駐で(リクエスト)ファイル監視で作るかな
2020/03/27(金) 13:51:20.69ID:qYMoCqhd0
名前付きパイプとかは?
2020/03/27(金) 14:14:26.54ID:Y964uCoh0
Windows限定で良いなら MSMQ とかは?
2020/03/27(金) 15:13:13.57ID:paZiMxhtd
>>949
embedIOで雑なHTTPサーバ作る。超楽。
955デフォルトの名無しさん (ワイーワ2 FF1a-nBi6)
垢版 |
2020/03/27(金) 15:21:11.20ID:9RtDMjhbF
>>949
windows 用の sshd をサービスに登録して起動
リモート側から putty とか plink とかで操作
956デフォルトの名無しさん (ワイーワ2 FF1a-nBi6)
垢版 |
2020/03/27(金) 15:23:45.35ID:9RtDMjhbF
windows 限定でセキュリティ気にしないなら psexec
2020/03/27(金) 15:31:45.21ID:ITHcMNsn0
インターネットに公開するのかイントラネット内だけの話なのかで大分変わりそうだが
2020/03/27(金) 17:16:14.97ID:cwhPeqJj0
Ruby なら、コマンドプロンプト・PowerShell から、1-liner で、
Rubyで作られた遅いウェブサーバー、WEBrick が起動する

ruby -run -e httpd . -p 8080

そのフォルダに、index.html があれば、これでブラウザからアクセスできる

http://localhost:8080
2020/03/27(金) 17:36:28.44ID:GP64i6UA0
知らない技術が出てきて勉強になります
C#でさささと書ければ良いので色々試させて頂きます
2020/03/27(金) 17:39:24.99ID:aLfv28Wa0
要件まとめずに実装方法から入ってあとで後悔するパターンだね
個人用途ならいいんだけど
2020/03/27(金) 17:40:11.90ID:GP64i6UA0
>>957
イントラのお気楽サーバーです
AD立ててるので操作ログにログインIDを記録することでセキュリティに替えたいと思います
中国軍のハッキング等は想定しておりません
2020/03/27(金) 17:49:36.14ID:GP64i6UA0
>>960
一部のチーム員が使うサーバ管理ツールです
すでにある実行ファイルを任意のタイミングで実行するのみのもの
DB使ったフラグのやり取りしてもと思ったのですが、実行ファイルをポーリングさせてリクエスト監視するのは効率悪いなと断念しました
2020/03/27(金) 18:53:19.57ID:aLfv28Wa0
利用者がWindowsのサーバー管理をしてるんなら
Powershellが第一候補なんじゃないかな

認証やロギングの要件わからないけど
Invoke-Commandだけでも結構なことができるよ
2020/03/27(金) 19:24:21.17ID:dVgXV7dy0
>>949
そんな時こそD-COMだよ!
2020/03/28(土) 10:22:41.18ID:PEtLg9Oh0
staticな拡張メソッドが作れれば割と便利な気がしないこともない
2020/03/29(日) 17:16:53.96ID:eP0h1Frc0
>>949
普通に考えてまずWindowsサービスだろ
プロトコル等に規制がないならIISでもいいけど
2020/03/29(日) 20:16:57.43ID:8urZoGoxM
>>966
それは回答になってないだろ
winサービスを自前で作るんならクライアントから要求を受ける仕組みもセットで示さないと
まあその場合大抵はTCP系だろうが、だったら素直に最初からIISの方が手っ取り早い
2020/03/29(日) 22:37:41.11ID:Qec2KlTa0
何言ってんだこの馬鹿
2020/03/29(日) 22:55:05.70ID:mCKUE4Oo0
誰に言ってんだw
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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