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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 9f0b-Fgt1)
垢版 |
2019/12/11(水) 22:12:11.28ID:d09CciDz0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part145
https://mevius.5ch.net/test/read.cgi/tech/1570446977/
■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/
■コードを貼る場合は↓を使いましょう。
http://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/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
・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
2020/01/25(土) 12:49:28.83ID:i8uJy1+m0
>>583
相談室でやれ
2020/01/25(土) 13:42:09.40ID:4b4RV2/q0
>>583
引数がそれぞれ0,4,7,17,5とか変わったらどうやって呼び出すの?
2020/01/25(土) 14:13:33.17ID:o6R4c/m/0
>>583
それがクラス定義だった糞プログラムのメンテ担当したことあるけど、正直殺意沸くレベルだった
587デフォルトの名無しさん (ワッチョイ 872d-N7cG)
垢版 |
2020/01/25(土) 14:20:20.86ID:ZOSNmQ0W0
文字列やバイナリを処理する辺りでswitchが出てくるのは仕方ないにしても、それ以外でswitch文が出てきたらほぼ設計ミスだろうな
588デフォルトの名無しさん (ワッチョイ 872d-N7cG)
垢版 |
2020/01/25(土) 14:22:56.55ID:ZOSNmQ0W0
ごめん、入力を受け付けるようなものは使ってもミスでも何でもないな
2020/01/25(土) 14:29:09.12ID:yYit9skn0
>>583
それでいいと思うなら、もうそれでいいよ。
switchが役立つと思う場面に出会ったことがないなら無理に使わなくていい。
普通にプログラミングの学習をしたり実際に何か作り始めれば、そう遠くないうちに役に立つと思える場面に出会うはず。
2020/01/25(土) 14:30:38.90ID:PElhnxqRM
重複したswitchや長大なswitchが悪いのであってswitch全てが悪いわけではない
拡張するときに不便を感じたら多態に置き換えればいい
591デフォルトの名無しさん (ワッチョイ 7f63-FqWS)
垢版 |
2020/01/25(土) 14:46:40.30ID:r9Vw3y6V0
>>583
使い道がないのはお前の存在も同じだから
中央線にでも飛び込んで死ね
592デフォルトの名無しさん (アウアウウー Sa4b-2gyN)
垢版 |
2020/01/25(土) 14:56:41.64ID:GuCewVbja
プログラミングに限らずどのフィールドでもそうだけど、
イキってる系の連中の主張は話半分に聞いておくのがいいと思うよw
2020/01/25(土) 15:17:19.02ID:m3Nt4oA+0
>>583
条件文をマッピングテーブルで置き換えるという古典的なリファクタリング方法の一つ
どちらかが常に優れてるわけではなく状況に応じて選択するもの

C#のバージョンや分岐の数によっては
コンパイラがswitch文をdictionaryのlookupに変換してる
2020/01/25(土) 15:30:40.16ID:d2esTLOPa
>>593
それ今は迷信
Roslyn移行後のC#コンパイラはswitchのcase数が多い場合はハッシュに基いた二分探索のようなコードが生成される
2020/01/25(土) 17:27:27.49ID:BsPUEvyF0
>>578
同感
業務系アプリをブラウザで動かしたいっていう潜在要求は多いと思う
2020/01/25(土) 18:16:56.04ID:m3Nt4oA+0
>>594
Roslynから変わったのは文字列で分岐される場合のみの話

文字列比較でhash tableをlookupするんじゃなく
数値比較で事前にハッシュしたsort済みarrayをlookupするようになってる
細かい部分を抜きにすると数値をキーにしたSortedDictionaryのlookupと同じ
でこういうのは今の>>583には不必要な知識
2020/01/25(土) 22:26:55.47ID:wDceYoyFa
流れよく分かんないんだけど
つまりenumで分岐して処理呼び出す場合はswitchと配列のどっちが何倍くらい速いの?

public static int Execute(this Test type, int value){
 // 無難にベタ書き
 switch(type){
  case Test.One: return Method(value);
 }

 // 配列からメソッドを呼ぶ
 return methods[(int)type](value);
}

こんな風にenumに処理持たせてやりたいんだ俺
2020/01/25(土) 22:30:01.75ID:/sK0Ml340
ケースバイケース
どっちが早いのかは実測が基本
どっちも最適化等々で逆より早くなりうる可能性がある
2020/01/25(土) 23:36:00.99ID:qKRb63Fa0
単純な配列はいつでも最速だと思ってたが違うのか?
読むのが単なる値じゃなくて処理な時点で誤差レベルだと思うが
2020/01/25(土) 23:53:16.79ID:9ulxHddS0
XLAT
2020/01/26(日) 00:22:55.28ID:P1M2Ekec0
配列はちゃんと理解してないと境界値チェックが入って意外に遅くなることがあるよ
だいたい気にならんレベルだけど競技プロとかやるようなら結構影響してくる
602デフォルトの名無しさん (アウアウウー Sa4b-2gyN)
垢版 |
2020/01/26(日) 00:30:35.09ID:1Qgc/rXOa
>>597
仮に配列使う方が効率的だとしてもenumの値に依存するような実装は論外でしょうw
やってはいけない、の見本みたいなもの
2020/01/26(日) 01:00:25.24ID:P1M2Ekec0
俺もCから入ったから配列にして呼び出す処理は昔はよく書いた
enumを配列の添字にするのもよくやった
処理速度気にする開発することは多少あるけど基本的にどっちもC#ではやらんな

enumに処理持たせたいって要件ならそれぞれの値ごとにclass作って継承させるかな?
詳細仕様次第ではあるけど
そんなんめんどくせってなるようなレベルならぶっちゃけどっちだって変わらん話なんだから好きにすれば?って思う
2020/01/26(日) 02:03:17.34ID:ux8Vy6ZU0
>>597
delegateの配列で試してみたが
switchのほうが2~5倍くらい速かった
最適化できる度合いの違いかな
605デフォルトの名無しさん (アウアウウー Sa4b-2gyN)
垢版 |
2020/01/26(日) 02:46:23.95ID:1Qgc/rXOa
過去に散々既出だと思うけどdelegate自体がもともと重いんだろうね。
単なる関数ポインタとは違うから
2020/01/26(日) 07:42:07.62ID:oZpGD5h+a
>>605
デリゲートでなくインターフェースを使っても>>604と同じ結果なのが謎だった
2020/01/26(日) 10:32:12.87ID:aeprKMLHr
enumの実装が書けたら違うことになってるかもな
でも今はいらない
608デフォルトの名無しさん (アウアウウー Sa4b-FkkX)
垢版 |
2020/01/28(火) 19:46:47.61ID:eMbEeMz/a
>>585
内部的なロジックミスにならんようにすればいいだけ
プログラムが長大になる原因はテキストを利用しないからだと思いますよ
1万行のプログラムが果たしてそれだけ必要なのか?って思います
609デフォルトの名無しさん (アウアウウー Sa4b-FkkX)
垢版 |
2020/01/28(火) 19:48:39.10ID:eMbEeMz/a
>>589
俺も思いますね
というか文法的な事でももっと改善してよって事多いですよね!

0<input<&&input<5→うぜー
0<input<5→これでいいだろうが
2020/01/28(火) 20:37:03.72ID:WmWS3LeK0
>>609
範囲チェックの改善なんて散々議論されてるし今も要望で上がってる
気になるなら見てくればいいよ
なぜ未だに入っていないかとかもちゃんと説明されてる
611デフォルトの名無しさん (アウアウウー Sa4b-FkkX)
垢版 |
2020/01/28(火) 20:54:23.00ID:eMbEeMz/a
>>610
何で?ググるの面倒なので
2020/01/28(火) 20:56:03.48ID:ciqR13vi0
>>609
もうID変わってるだろうけど>>589なのだが、皮肉のつもりで言ったのが通じてないようだ。
switchの用途として>>583みたいなのでいいのではなんて言うのは圧倒的に経験が少ない証拠だろう。ちょっと慣れて自分でコードを書けるようになればそんなバカな発想はしなくなるよ。
そんな段階で>>609みたいな文法にケチつける前に、なんでその文法が必要なのか、何でそういう形式になってるのか理解する努力をしなよ。
C#のような後発の言語が生まれる過程では、君みたいな初心者が考えるようなことはとっくの昔に議論済みでそれらを踏まえた上で今の形がある。疑問を持つのは多いに結構だけど、往々にして言語の仕様が悪いのではなく、単に自分が無知なだけだから。
2020/01/28(火) 20:58:55.67ID:gjKbUoJM0
そもそもシリアライズするにしても=なんかつかいたかねえ
2020/01/28(火) 21:06:37.92ID:WmWS3LeK0
>>611
俺も面倒
請求書送っていいなら訳つけてまとめてくるよ
2020/01/28(火) 21:06:53.68ID:q5l9JsKl0
最近の言語の傾向見てると
どっかの言語が導入すると移植のために?かどうかはわからんが
良し悪しに関わらず他の言語も実装される感じ
2020/01/28(火) 21:23:16.25ID:q5l9JsKl0
JavaScriptとPHPに慣れたら多次元連想配列無い言語がオワコンに見えるようになった
しかし

var obj = getExExBigData();

↑超絶巨大データ(フォーマット・ドキュメント不明)
勘弁してくれよってのも事実
c#の未来はどうなるのか?
2020/01/29(水) 04:42:05.41ID:9DDwBhYq0
DataGridViewで、Cellに不正な値が入力された場合はフォーカスの移動を禁止するようにしたいのですが、
以下の方法では、移動してしまいます。
移動させないようにするにはどうすればよいでしょうか。

private void dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (String.IsNullOrEmpty(this.dataGridView[e.ColumnIndex, e.RowIndex].Value as string))
{
e.Cancel = true;
}
}
2020/01/29(水) 07:14:46.75ID:hzNdq+pG0
>>617
具体的に何入力して移動したん?
2020/01/29(水) 07:26:15.27ID:M9CckfF9M
>>609
pythonへGo!
https://docs.python.org/ja/3/reference/expressions.html#comparisons
2020/01/29(水) 07:51:31.42ID:wu2AIlA1a
>>617
CellChangingみたいな選択セル変更前のイベントが無かったっけ?
2020/01/29(水) 17:28:02.98ID:HGA4G3kr0
>>617
この人だけじゃないけど、まずこういうところに質問投げる前に分岐がきちんと機能しているか確かめた方がいい
それの場合は this.dataGridView[e.ColumnIndex, e.RowIndex].Value as stringの内容確認
直接の回答としてはhttp://dobon.net/vb/dotnet/datagridview/cellvalidating.htmlを参考にして書き直せ
解説を入れると
DataGridViewでセルに直接値を入力した場合はフォーカスが変わるか.EndEdit()などしないと入力された値が反映されない
そのイベント自体そのために用意されているはず
だからそのメソッドの中で「dataGridView[e.ColumnIndex, e.RowIndex].Value」は入力する前のセルの値で
入力された値を参照したかったら「e.FormattedValue」を見ないといけない
622デフォルトの名無しさん (アウアウウー Sa21-0Ybi)
垢版 |
2020/01/29(水) 20:53:31.76ID:2z1gsFLxa
>>612
この言語って文字列操作に特化してるからテキストを利用するのって
全然普通だと思いますけどね。

後0<input&&input<10じゃないとだめなのは、何となくですが
数式はポーランド記法によって処理されることに関係しますか?
分かりませんけど。
2020/01/29(水) 21:21:21.50ID:7ZbwpcWy0
>>622
a < b < cが出来ない理由は自分で演算子オーバーロードしてみたら簡単に分かるぞ
a < bの時点でbool値を返すからcとは比較できなくなる
2020/01/29(水) 21:32:07.46ID:3Ec+y/7b0
いや構文解析での段階の話(要は3項演算的な)だろうかなそれは関係ないと思う
まあ文字列操作に特化は意味不明だけど
2020/01/29(水) 21:36:40.28ID:xfBLmZ140
それ関係ないと思う
2020/01/29(水) 21:39:08.32ID:xfBLmZ140
かぶった。関係ないっていったのは演算子オーバーロードのことね。
627デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/01/29(水) 21:45:33.03ID:Bye/BSTsa
>>623
それは出来ない理由にはなってないんじゃないの?
あんまり自信はないが、

評価結果が数値 < 評価結果が数値
評価結果が数値 < 評価結果が数値 < 評価結果が数値

両者を別の演算として区別することはやってできないことはないはず。
2020/01/29(水) 21:59:18.87ID:iDUguYS70
>>627
既存のルールに新たに3値を並べて比較する構文を追加するとしたら、既存のルールを維持したまま、新たなルールに伴う考えうる様々な組み合わせについて明確で一貫性や完全性のあるルールを作らなければならないが、かなり複雑なものになるだろう。
やってやれないことはないにしても、デメリット(手間と複雑さや混乱)に見合うメリットがないから、ほとんどの人に望まれていないし、言語仕様として追加されることもないだろう。
2020/01/29(水) 22:17:11.48ID:hzNdq+pG0
こんなの簡単だろ
でもやっても凄いって言われないから
実装されないだろうな
630デフォルトの名無しさん (アウアウウー Sa21-0Ybi)
垢版 |
2020/01/29(水) 22:18:04.76ID:2z1gsFLxa
<・・・小文字だからC#の言語に従う
<・・・大文字なので特別に数学的記法とみなす

これでどうだろう
2020/01/29(水) 22:31:04.06ID:Fd2iU5f0M
if(a < x < b)
実はこれは言語機能をいじらなくても自作型で再現できる
2020/01/29(水) 22:34:17.30ID:PCXIkBj+0
>>628
python で実現してるのに何を言ってるんだよw
633デフォルトの名無しさん (アウアウウー Sa21-0Ybi)
垢版 |
2020/01/29(水) 22:34:24.68ID:2z1gsFLxa
>>631
#defineか?
2020/01/29(水) 22:39:08.64ID:7ZbwpcWy0
>>627
そりゃ実装すれば何だって可能だが、論理的な矛盾になるから無理なんだよ
演算子の優先順位と結合則で二項演算するのが原則なのに、そこを横紙破りしてしまったら誰も付いて行けない
2020/01/29(水) 22:41:27.05ID:iDUguYS70
>>630
そんな見にくい&醜いのはやめてくれ
2020/01/29(水) 22:46:36.64ID:hzNdq+pG0
>>634
どうでもいいだろそんなん
2020/01/29(水) 22:56:00.32ID:PvehEt0vM
>>633
基本的な演算子定義だけで出来る
2020/01/29(水) 22:56:01.11ID:3Ec+y/7b0
どうしてもやりたいなら$"3<{x}<5".Predicate()みたいなライブラリ作ればいいんじゃね
639デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/01/29(水) 23:06:16.31ID:Bye/BSTsa
>>634
文脈依存キーワードと何も違わないと思うよ
2020/01/29(水) 23:16:52.10ID:tkk/tPU50
a < x の値を独自クラスのインスタンスにできるならあとの < b はどうにでもなるだろうけど
そもそも前者って可能なんだっけ?
641デフォルトの名無しさん (アウアウウー Sa21-0Ybi)
垢版 |
2020/01/29(水) 23:24:37.56ID:2z1gsFLxa
>>637の答えがほぼ>>638ってことで良いですか?
また便利な情報を得てしまったわ
2020/01/29(水) 23:27:24.25ID:7ZbwpcWy0
>>640
比較演算子をオーバーロードするだけじゃない?
false相当の値か右辺の値を戻すようにして、併せてimplicitでboolを当てておけばifでも使えるはず
2020/01/29(水) 23:36:35.98ID:tkk/tPU50
a b x の型が int だったりしたとき、それオーバーロードできるんだっけ?
2020/01/29(水) 23:57:35.84ID:fVMIrPAj0
C#のターゲットフレームワークってどういう仕様なんでしょうか?
わかりやすいサイト教えてもらえると助かります。

exe 4.5 dll 3.5 
→ ビルドできるからok?
exe 3.5 dll 4.5 
→ コンパイルエラー
  ただし動的に読み込んだ場合は動いてるっぽい?
2020/01/30(木) 01:31:07.75ID:N/97jNZ60
wrapする型を定義して a < x < b できるようにしてみた
https://dotnetfiddle.net/FdQsX1

が、まあ使わない
2020/01/30(木) 05:02:06.68ID:CgdKR7K00
んんんんんんh
2020/01/30(木) 14:25:04.44ID:XrVMMkZO0
visual studio2019 30日たったら使えなくなったんだけど
無料じゃないの?
PC替えるまで以前のバージョンはずっと使えてたんだけど
2019は違うの?
無料版使い方おしえてください
648デフォルトの名無しさん (ワッチョイ 3d2d-XhTL)
垢版 |
2020/01/30(木) 14:27:27.39ID:UIStC4VF0
ログインすれば無料のまま使えるよ
2020/01/30(木) 14:30:14.48ID:XrVMMkZO0
更新したら使えました
ありがとう
2020/01/31(金) 03:22:54.75ID:A50vozAla
ボタンを押すと計算開始して結果をテキストボックスに表示する処理(数十秒かかります)
まずボタンを押してその処理がまだ終わってないうちに、またボタンを押すと次の処理がどんどん溜まっていくのですが、
これを防止する方法はないでしょうか
(例えばついボタンをダブルクリックをしてしまった時に1回表示してからまた同じ処理に入ってしまう)

ボタン押したら結果が表示されるまで全部のボタンのenabledをfalseにする処理入れてみたのですがこれではうまく回避できませんでした
2020/01/31(金) 03:40:35.08ID:PzD8ZwF3M
lock使う
2020/01/31(金) 04:08:48.51ID:sTuegRNa0
メインスレッドには実際にボタンを無効化する作業をしてもらわないといけないので
計算はasync/await等を使って別スレッドで行う
2020/01/31(金) 06:01:04.44ID:A50vozAla
>>651-652
正直まだ難しそうですががんばってみます。ありがとうございました。
2020/01/31(金) 07:46:03.52ID:EEAl6aZb0
>>650
http://aquablue7.blogspot.com/2013/05/blog-post.html
655デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/01/31(金) 13:16:14.42ID:59NEldNla
>>653
何も難しくないよw
>ボタンのenabledをfalseにする処理入れてみたのですがこれではうまく回避できません
これは「重い処理」の後にそれをやってるからそうなる

ボタンのイベントハンドラで真っ先にEnabled = falseにすればそんなことは起こらない。
2020/01/31(金) 14:04:57.33ID:EEAl6aZb0
>>655
やったことないアホは黙ってた方がいいぞ
あと反論するならググってから反論した方がいい
657デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/01/31(金) 14:58:26.86ID:59NEldNla
>>656
はいはい頭悪そうワロタw
658デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/01/31(金) 15:16:23.75ID:59NEldNla
なぜかコードが貼れないので割愛するけど、実際にやって>>655が正しいことを確認した
当たり前の話だがw
2020/01/31(金) 15:20:18.74ID:La68B+L1M
>>657
ググることもできずに頭悪いとしか書けないとか可哀想なやつだな
>>655みたいな誰でも思いつく方法でなんとかなってたら苦労はせんよ
2020/01/31(金) 15:22:19.46ID:La68B+L1M
>>658
当たり前の話だが負荷かけてテストしてるよな?
661デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/01/31(金) 15:25:15.63ID:59NEldNla
つくづく馬鹿な奴w
偉そうに他人様に命令する前に自分は実際にコード書いて確認したのかとw

まあ普通こんなレベルの話は確認するまでもないけどね
662デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/01/31(金) 15:41:48.86ID:59NEldNla
どうでもいいけど

(1) Thread.Sleep
(2) Task.Delay
(3) ビジーループ

いずれのダミーを使ってもイベントハンドラの頭でEnabled = falseとすることで
ボタン連打によるイベントハンドラへの意図しない「再入」を抑止できることを確認した
663デフォルトの名無しさん (ワッチョイ 3d2d-XhTL)
垢版 |
2020/01/31(金) 15:43:04.01ID:xcV7YFLC0
イベントを呼び出すのが毎回同じスレッドなんだから、>>655の方法で完璧に止まると思うけどな
2020/01/31(金) 16:25:21.45ID:6LQhDtiB0
>>662
>(例えばついボタンをダブルクリックをしてしまった時に1回表示してからまた同じ処理に入ってしまう)
再入が問題じゃないって気づけよ
タイミングによってクリックイベントが2回キューイングされることがあるのが問題なんだよ
665デフォルトの名無しさん (ワッチョイ 6663-3Mgd)
垢版 |
2020/01/31(金) 16:55:17.80ID:rVrHfFzc0
ガイジに何を気付けって?
お前も方面が違うだけで同じガイジだな
2020/01/31(金) 17:43:12.90ID:Wmzh3pBZ0
>>650
イベント処理に入る前にイベントハンドラを外しておくといい。button1.Click-=button_Clickみたいな感じで
ただValueChangedとかならともかくボタンで普通はやらないと思う。「enabledをfalse」になっているボタンでイベントが実行されるのはおかしい
計算処理を非同期に渡して計算が終わらないうちにEnabledを復帰させるとか変なことやっていないか?
EnabledでなくVisibleをfalse->trueに変えてみて確認したら?
動作に関しては他の人がいろいろ言っているようだけど一度ミニマムコード作って自分で動作確認するのが一番確実
2020/01/31(金) 18:37:18.25ID:y3M2GGQ20
private void button1_Click(object sender, EventArgs e) {
button1.Enabled = false;
//重い処理
button1.Enabled = true;
}

上のコードでもユーザーが最初のクリックをしてから
イベントハンドラが呼ばれてEnabled = falseが設定されて
さらにそれからクリックできなくなるまでの間に
複数回のクリックが発生する可能性がある
(Windowメッセージのキューに溜まる)

だからEnabled = trueに戻す前に
溜まったクリックイベントを流してやる必要がある
668デフォルトの名無しさん (ラクッペ MM6d-3Mgd)
垢版 |
2020/01/31(金) 19:04:25.31ID:AyZqOEveM
難しすぎて分かんねえよ兄貴
2020/01/31(金) 19:05:05.53ID:EEAl6aZb0
>>663
イベントは非同期でキューイングされるから>>655では不完全
アマチュアレベルとか自分しか使わないならそれで良いけど不特定多数が使うようなソフトだとダメダメ
ID:59NEldNlaはコード書いて確認する姿勢は良いけど確認がザル過ぎる
てか、アプリ作ってたらこの手の経験はしてるはずなんだが…
2020/01/31(金) 19:14:36.51ID:oeaCTmz/M
イベント流すってどうするんですか?
671デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/01/31(金) 19:29:46.30ID:59NEldNla
>>667
そんな必要ないってば...
君がOSのコード書く立場になってよく考えてよ。
君はメッセージをエンキューする時にウィンドウが無効化されているかどうか
ノールックでやっちゃうような間抜けなコード書くの?w

そんなのありえへん
2020/01/31(金) 19:30:59.97ID:BjcNa1EE0
ここ初心者スレだろ
2020/01/31(金) 19:34:11.53ID:6LQhDtiB0
いやだから、無効化されるまでに2回以上キューにたまる可能性があるって話なんだが...
2020/01/31(金) 19:34:38.34ID:J9WtEN9Ir
よくわからんけど痛い人が大声で独演会をやっています
2020/01/31(金) 19:47:15.52ID:EQPJwN2a0
再現できるコードも示さずにこんな現象があるんだって書き続けるのは他でやれよ
それにかまう連中も荒らしと同じ
>>1を読んで理解してから書き込め
2020/01/31(金) 20:12:38.30ID:J9WtEN9Ir
今日も仕事で新型コロナウイルスなんて騒ぎすぎだという老人の独演会を30分聞かされた
対策も必要ない死ぬ人は死ぬでいいじゃないかと言う話

老害しなないかな
677デフォルトの名無しさん (ワッチョイ 3d2d-XhTL)
垢版 |
2020/01/31(金) 20:19:21.81ID:xcV7YFLC0
キューが溜まる派は、button1.Enabled = false;なし、かつ、非同期処理なしにすれば簡単に再現コードができるんだろう
でも現実には再現しないから困ってんだろうな
678デフォルトの名無しさん (ワッチョイ 3d2d-XhTL)
垢版 |
2020/01/31(金) 20:19:22.13ID:xcV7YFLC0
キューが溜まる派は、button1.Enabled = false;なし、かつ、非同期処理なしにすれば簡単に再現コードができるんだろう
でも現実には再現しないから困ってんだろうな
679デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/01/31(金) 20:31:30.36ID:59NEldNla
ちなみに念のためこんなのもやってみたが

//button1をクリックした後button2を連打せよ
private void button1_Click(object sender, EventArgs e)
{
  Thread.Sleep(5000);
}

private void button2_Click(object sender, EventArgs e)
{
  MessageBox.Show("Button Clicked !");
}

Win32に詳しくないので理由を与えることが出来ないけど、
この場合もメッセージボックスは1度しか表示されない
680デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/01/31(金) 20:46:38.12ID:59NEldNla
>>676
完全スレ違いだけどそれはその老害の言ってることの方がただしいw

専門家はたいしたリスクないから騒ぎすぎだと言ってるのに
どっかの怪しいネットde真実クンの被害妄想を真に受ける奴がどうかしてるよ

こういうの認知バイアスって言うんだけどさ
2020/01/31(金) 21:00:47.10ID:J9WtEN9Ir
一流の専門家wとWHOと各国の対応見る限り
誰かの方が認知バイアスかかってると思う

世の中でこういわれてるけど逆の方に○○と言うのを言って俺スゲーしたいのが老害
682デフォルトの名無しさん (アウアウウー Sa21-G+gO)
垢版 |
2020/01/31(金) 21:06:43.84ID:59NEldNla
>>679
いや待て、ひょっとしてMessageBoxがフォーカスを奪うのが関係しているのかと思って
Console.WriteLine("Button Clicked !");

に変えてみたらなんと複数回表示されるなww
何てこったw

この現象は以下のコードで回避できた
private void button2_Click(object sender, EventArgs e)
{
  if (button2.Enabled)
  {
    button2.Enabled = false;
    Console.WriteLine("Button Clicked !");
  }
  Application.DoEvents();      
  button2.Enabled = true;
}
2020/01/31(金) 21:08:40.75ID:EEAl6aZb0
>>675, >>677
だからテストするなら負荷かけろって話な
>>667の話を理解できてたらわかると思うんだが、>>671みたいな絶望的なアホもいるからなぁw
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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