- 1 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 17:40:19.48 ID:oKXVP34zM.net]
- 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980を踏んだ人は新スレを建てて下さい。 >>980が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■関連スレ C#, C♯, C#相談室 Part95 mevius.5ch.net/test/read.cgi/tech/1508180530/ C#, C♯, C#相談室 Part93 https://mevius.5ch.net/test/read.cgi/tech/1492818720/ ■前スレ ふらっと C#,C♯,C#(初心者用) Part136 mevius.5ch.net/test/read.cgi/tech/1520057345/ ■コードを貼る場合は↓を使いましょう。 ideone.com/ https://dotnetfiddle.net/ ■情報源 https://msdn.microsoft.com/ja-jp/library/gg145045.aspx https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index https://msdn.microsoft.com/en-us/library/gg145045.aspx referencesource.microsoft.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
- 960 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 21:10:12.98 ID:u/NNd5OV0.net]
- 未確認飛行のSpan説明みてサンプルコード動かそうとしたんだけど
using System.Memory;すると CS0305ジェネリック種類 'Memory<T>' を使用するには、1 型引数が必要です。 って叱られるのなんで? VSもCoreも最新
- 961 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 21:20:59.23 ID:msgJi+IZM.net]
- SpanはSystem.Spanだ
- 962 名前:デフォルトの名無しさん mailto:sage [2018/06/02(土) 21:33:12.83 ID:u/NNd5OV0.net]
- System.Spanにしてもでてきおる
using static System.Memory<string>; ってするとエラーは消えた
- 963 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 17:57:54.97 ID:nwnHFAsS0.net]
- フォームアプリでマウスクリックでイベントをはっせいさせているのですが、
ある処理ループの実行中はこのクリックイベントの割り込み発生を禁止させたいです。 マウスクリック割り込みイベントを無効化、有効化する方法ってないでしょうか?
- 964 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:03:05.41 ID:acSSis/XM.net]
- >>942
そうじゃないusing System;ってこと
- 965 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:05:10.81 ID:5sPxkTAt0.net]
- >>943
イベントの購読とその解除 ufcpp.net/study/csharp/MiscEventSubscribe.html
- 966 名前:デフォルトの名無しさん [2018/06/03(日) 18:07:49.08 ID:qpwWeWwga.net]
- >>943
-=、+= デザイナーみればわかると思うよ
- 967 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:08:39.42 ID:imVGa92Ya.net]
- >>943
Control.Enabled どうでもいいけど、「割り込みイベント」って表現は間違ってるから他所では使わない方がいいよw
- 968 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:26:12.78 ID:y7bK61pJa.net]
- 処理中フラグ持っておいて
クリックイベントの入り口で処理中ならreturnするのでよくない? bool 処理中=false; クリックイベントの頭 if(処理中)return;
- 969 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:33:27.61 ID:3EuqECGs0.net]
- lockで囲めば
- 970 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:43:15.37 ID:acSSis/XM.net]
- ボタンからしか起動しない処理だと保証されてるなら-=+=でもフラグでもいいが
そうでないなら真面目に並列処理管理しないとね
- 971 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 18:59:01.85 ID:4vwgZnFjp.net]
- はあ?
クリックイベント自体を抑止したのか? 意味あるの?
- 972 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 19:18:23.10 ID:bhcyF/oUa.net]
- 処理ループの中でメッセージループを実装してGetMessage()でマウスイベントをフィルターかな?或いは読み捨てる
- 973 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 20:09:50.51 ID:pjD3SZS60.net]
- え、連打対策してないの?
- 974 名前:デフォルトの名無しさん [2018/06/03(日) 20:15:38.36 ID:OWt1glR4a.net]
- 非同期で実行した場合とかの抑止とか?とエスパー
- 975 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 20:19:01.20 ID:S4J0YpoT0.net]
- >>944
つまりSpanを使うのにusing System;さえすればいいってこと? ごめんな、クソ素人過ぎて質問がまずいのか ufcpp.net/study/csharp/resource/span/の var s = "abcあいう亜以宇"; var sub = s.Substring(3, 3); var span = s.AsReadOnlySpan().Slice(3, 3); for (int i = 0; i < 3; i++) { Console.WriteLine((sub[i], span[i])); // あ、い、う が2つずつ表示される } を試したいんだけど、できないって話なんだ
- 976 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 20:26:16.06 ID:klvCZP9p0.net]
- >>938
やっぱりそうだよね 厳密にやろうと思ったら昔ながらの方法でやるしかないんだよね
- 977 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 20:50:59.76 ID:H2Gh+VvdM.net]
- >>955
現時点ではAsReadOnlySpanが存在しないっぽいね Stringはもともと読み取り専用だからAsSpanでReadOnlySpanになるってことだと思うけど 過渡期の記事はそのまま鵜呑みにしない方がいいぞ
- 978 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 21:25:48.86 ID:
]
- [ここ壊れてます]
- 979 名前:nwnHFAsS0.net mailto: >>945
全く知らない概念でした。 勉強してみます。 [] - [ここ壊れてます]
- 980 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 21:26:28.88 ID:nwnHFAsS0.net]
- >>948
これうまい手ですね。 使える場所ありそうですので試してみます。
- 981 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 21:27:58.09 ID:nwnHFAsS0.net]
- >>953
おっしゃる通りで、連打対策必要だったんですね。 フォームアプリだと必須の対策なんですね。 他で少し変な挙動してたのは連打対策してなかったことが原因のようです。 連打対策してみます。 というか、どうやればいいんだろ。 また、お勉強しなければ。
- 982 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 21:42:26.87 ID:0r68Qt9D0.net]
- >>960
いま質問した答えをイベントメソッドに組み込めば連打対策は終了 そっちを先に覚えるのが普通だと思ってた
- 983 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 21:51:01.95 ID:imVGa92Ya.net]
- >>959
全然うまい手じゃないw PC-98の時代じゃあるまいし、フラグって言葉を聞いたら眉に唾して聞かなきゃダメwww それを好むのは可読性に感心がないダメグラマの可能性が高いw
- 984 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 21:56:36.02 ID:imVGa92Ya.net]
- そもそもUIのデザイン論なんて大げさな話じゃなくても、
ユーザーの捜査に反応できない文脈では何らかの方法(通常はグレイアウト)でそれを ユーザーに対して明示しないUIは問題あるでしょうww そんなことにも思い至らない回答者は無視していいよw
- 985 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 22:53:07.14 ID:S4J0YpoT0.net]
- >>957
ありがとう、そういうこともあるんだな 勉強になった 10Gくらいの固定長テキストファイルから一行ずつ読み取って 最初の1-10文字はUSER ID、11はSEX・・・って分けてdbに突っ込んでるんだけど StringBuilderでLength=0しつつappendするくらいじゃ、stringでsubstringするのとあまり変わらなかったんで Span使えばマシになるのかなと思ったんだ
- 986 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 23:00:15.10 ID:8gLBE5WNa.net]
- そんなもん丸ごとDBにロードしたほうが速いだろ
固定長ファイルのロードはどのDBMSでもコマンド一発でできる
- 987 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 23:12:33.52 ID:S4J0YpoT0.net]
- >>965
それなw tempのカラムに一行まるごと突っ込んで、クエリでsubstrするやり方やってみる https://stackoverflow.com/questions/12423991/import-fixed-width-text-file-into-sqlite
- 988 名前:デフォルトの名無しさん mailto:sage [2018/06/03(日) 23:35:40.25 ID:iikfdxhC0.net]
- 10GBのデータだと読取よりDBMSへの書き込み方法がネックになりそう
- 989 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 06:33:56.69 ID:mxEQUVjg0.net]
- >>967
細かくなるとdbスレ行きなんだろうけど 実際に書くところはC#なわけで、どこがボトルネックになってるのかザコ過ぎてわからんw とりあえずsqliteつかってメモリ上dbにinsertでトランザクション管理しっかりやってってして30分くらいだったからまーいいかと sql server expressだとbulk insertはわからんけどselectで並列処理されるみたいだから乗り換えてみる予定
- 990 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 11:04:17.43 ID:MivBMbBxa.net]
- sql server expressはひっくるめたDBサイズが最大10 GBまでだったと思うが
- 991 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 11:06:49.27 ID:UeJV2JW90.net]
- メモリしこたま積んでRedisかな
- 992 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 14:26:59.71 ID:pPavJvQvM.net]
- Postgresでいいよ
ロード時に固定長レコードのフォーマットを指定できるから一時テーブルもC#もいらん
- 993 名前:デフォルトの名無しさん [2018/06/04(月) 16:33:35.32 ID:7NrmQXKK0.net]
- MonoのLinux版のインストールの仕方、ご教示いただけますと有難いです。宜しくお願い致します。
- 994 名前:デフォルトの名無しさん [2018/06/04(月) 16:
]
- [ここ壊れてます]
- 995 名前:48:48.54 ID:aK/XyO250.net mailto: 米Microsoftが米GitHubを買収することで合意
http://www.itmedia.co.jp/news/articles/1806/04/news058.html [] - [ここ壊れてます]
- 996 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 20:38:58.19 ID:UeJV2JW90.net]
- >>972
ちょまど神を信仰すると天啓が降るぞよ
- 997 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 20:43:37.91 ID:CVKZewtza.net]
- >>972
Monoなんか今時もう誰も使ってないし誰もメンテしてないでしょ 今は.NET Coreの時代 GUIが目当てなら諦めなさい
- 998 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 20:52:46.96 ID:spHrXgPF0.net]
- UbuntuでもCentOSでもコマンド一発で入るがな
- 999 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 21:35:01.82 ID:ztrCxIDM0.net]
- >>975
何言ってんの?
- 1000 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 21:48:02.60 ID:9+XsYcyB0.net]
- Windows.Forms で WndProc を override して自分のコードを加えているのですが
デバッガで進めていくと、その中に突入してしまいます。 InitializeComponent の中みたいに、デバッガが入らなくする宣言みたいなものなかったですか?
- 1001 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 21:49:06.62 ID:BHtXacEqa.net]
- >>978
debuggerstepthrough
- 1002 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 21:56:07.60 ID:Uz3WpYRO0.net]
- >>975
Mono Releases | Mono www.mono-project.com/docs/about-mono/releases/
- 1003 名前:デフォルトの名無しさん mailto:sage [2018/06/04(月) 23:32:00.59 ID:054Q3E4O0.net]
- メインクラスとシリアル通信クラスの2つを使っています
シリアル通信の受信完了でイベントをメイン側に発生させることら可能でしょうか。受信完了したらメイン側から受信データを取りに行くようにしたいのですが。
- 1004 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 00:07:28.69 ID:jE9yEXCCa.net]
- >>981
何でそうなるのw 発想が逆だってw そのシリア通信を担当するクラスSがデータ受信を通知するイベントを発生させて 受信したデータを利用する側がSの参照を握ってイベンを受信すればいいでしょw ついでに言えば受信データもEventArgs使って渡してしまえばいい
- 1005 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 00:33:25.52 ID:liKML/cX0.net]
- しょうがねえだろ初心者なんだから
- 1006 名前:976 mailto:sage [2018/06/05(火) 07:18:51.35 ID:ByFVOB9IM.net]
- >>982
やりたいのことはそれなんですよw 説明が下手ですいません 厳密にはデータを受けた事が分かったらメイン側は受信データの内容を解釈するクラスに送って処理分岐という形にしようかと思ってます。 用語や処理の知識がおいついてきてないので、あれを応用しようという感じにならず、調べるためのキーワードも出てこないです。 >>クラスSがデータ受信を通知するイベントを発生させて受信したデータを利用する側がSの参照を握ってイベンを受信すればいいでしょw ここが具体的にどういう構文になるのでしょうか。
- 1007 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 08:07:17.14 ID:D4M8TybKa.net]
- Signalを使っても作れるな。
- 1008 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 09:11:21.09 ID:GjVlFAo70.net]
- >>963
PCをあまり使い慣れてない人とか、ボタンはシングルクリックでいいのをダブルクリックしちゃったりとかあるんだよなこれが・・・
- 1009 名前:デフォルトの名無しさん [2018/06/05(火) 09:29:57.56 ID:nr/+sOXHa.net]
- 非同期じゃないならボタンイネーブル切ればいいだけじゃね
- 1010 名前:デフォルトの名無しさん [2018/06/05(火) 09:32:16.99 ID:nr/+sOXHa.net]
- すまん。忘れてくれ
- 1011 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 10:35:58.82 ID:l/0/VM/ma.net]
- 状態をGUIだけに持たせておくのはおかしいといつか思うはず
- 1012 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 12:11:20.04 ID:vCTdp4Eha.net]
- >>984
class FrameReceivedEventArgs:EventArgs { public byte[] Frame{get; private set;} .... } class CommunicationPort { public even EventHandler<FrameReceivedEventArgs> FrameReceived; .... } class FrameDecoder { public FrameDecoder(CommunicationPort c} { c.FrameReceived +
- 1013 名前:= CommunicationPort_FrameReceived;
} private void CommunicationPort_FrameReceived((object sender, FrameReceivedEventArgs e) { .... } .... } [] - [ここ壊れてます]
- 1014 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 12:44:05.86 ID:eGZjT6RJM.net]
- >>990
引数に渡されたものを弄るのは行儀の悪い設計 IReceiverインターフェイスみたいなのを用意してport.AddReceiver(decoder)とするか、 >>984の言葉通りにいったん双方のクラスの外でイベントハンドラで受けて仲介したほうがいい
- 1015 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 12:51:41.81 ID:eGZjT6RJM.net]
- >>990がなぜ行儀が悪いか補足しておこうか
普通、オブジェクトを別のクラスのコンストラクタに渡すとき、プログラマは 受け取った側→引数側 の向きの参照ができることを期待する ところが、>>990だとそれが逆なんだよ new FrameDecoder(this.port) としただけで、portがGCされないかぎり作り捨てたはずのFrameDecoderがGCされないという、非直感的なコードになるわけ
- 1016 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 12:55:30.14 ID:vCTdp4Eha.net]
- 何言ってるのかさっぱりわからん
よくわからん思考回路だな...
- 1017 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 13:09:28.12 ID:GjVlFAo70.net]
- 言い回しがようわからんが
>>990みたいなのするのが解放されないオブジェクトを量産するっていうのはなんとなくわかる
- 1018 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 13:11:38.32 ID:vyKZFDS5a.net]
- >>993
分からないならイベントというものを正しく理解してないんじゃないかな ボタンのクリックイベントをフォームが受け取れるのは、ボタンがフォームへの参照を(実際には間にデリゲートが入るので間接的にだが)持ってるから 基本的に、引数に渡ってきたものに自分自身を登録するのは避けたほうがいい オブジェクトのライフタイムが非常に分かりにくくなるから
- 1019 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 13:53:28.61 ID:UBCugO63M.net]
- reactive extensionsって.NET発祥なのに使う人少ないよね
- 1020 名前:デフォルトの名無しさん [2018/06/05(火) 15:23:49.06 ID:n583dJR10.net]
- >>974
ちょまど神って???状態でしたので調べてみました。 一つ知識が増えました。ありがとうございます。
- 1021 名前:デフォルトの名無しさん [2018/06/05(火) 15:24:19.24 ID:n583dJR10.net]
- >>975
そうなんですか。。。 NET Coreっての調べてみます。どうも有難う御座います。 ちょど昨日 GUI って何だ??って検索したばかりでした。 3日前からプログラムの勉強をはじめたばかりで。。。
- 1022 名前:デフォルトの名無しさん [2018/06/05(火) 15:24:34.93 ID:n583dJR10.net]
- >>980
ありがとうございます。TRYしてみます。 この掲示板すごーい!!皆様に感謝です。
- 1023 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 16:15:32.44 ID:vCTdp4Eha.net]
- >>994
ないないw イベントの購読解除はリークの原因になるのはその通りだけど、 それは>>991が主張するように、イベントを発生するオブジェクトを引数で受け取ったかどうかと無関係。 >>995 俺は理解してないのは君の方だと思うよw その君のいう俺様ルール、何が悪いのかさっぱり分からない そもそも今はそんな話をしてるんじゃないw 単に質問者の参考になるかもしれんコードの骨組みを示しただけw
- 1024 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 16:16:25.51 ID:vCTdp4Eha.net]
- あ、
× イベントの購読解除 〇 イベントの購読解除忘れ
- 1025 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 19:31:17.11 ID:70UTtyrn0.net]
- 次スレたててみる
- 1026 名前:デフォルトの名無しさん mailto:sage [2018/06/05(火) 19:33:22.39 ID:70UTtyrn0.net]
- ふらっと C#,C♯,C#(初心者用) Part138
https://mevius.5ch.net/test/read.cgi/tech/1528194762/ たった 議論は他のところでよろしく
- 1027 名前:デフォルトの名無しさん mailto:sage [2018/06/06(水) 00:18:56.95 ID:+J9HGVUKa.net]
- >>1000
想像力のない人だなあ >>990だと、イベントハンドラの登録を解除しない限り、FrameDecoderが不要になっても 登録先のCommunicationPortよりも先にGCされることは絶対にない。 じゃあ不要になったらイベントハンドラを登録解除できるようにしよう。いつ解除する? それはFrameDecoder自身には分からない。知
- 1028 名前:っているとしたら、それは>>981のいうメインクラスだろう。
登録解除するにはFrameDecoderクラスのDisposeメソッドを呼べ、という仕様にするか? 結局、985のFrameDecoderを正しく扱うには、メインクラス側がそういうクラス外から見ただけでは想像できないFrameDecoderの気難しい仕様を理解した上で、 必要に応じて明示的な解放を行わなくてはならない。 そんなことをするくらいならメインクラス側で明示的に登録・登録解除をやったほうが遥かに素直で分かりやすい。 [] - [ここ壊れてます]
- 1029 名前:デフォルトの名無しさん [2018/06/06(水) 00:26:33.34 ID:D75pa1n0a.net]
- 質問いいですか?
- 1030 名前:1001 [Over 1000 Thread.net]
- このスレッドは1000を超えました。
新しいスレッドを立ててください。 life time: 60日 6時間 46分 14秒
- 1031 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|