- 1 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 18:23:31 ]
- このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 >>980を踏んだ人は新スレを建てて下さい。 >>980が無理な場合、話し合って新スレを建てる人を決めて下さい。 前スレ ふらっとC#,C♯,C#(初心者用) Part45 (実質46) pc12.2ch.net/test/read.cgi/tech/1255658236/
- 237 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:06:31 ]
- >>231
用途に合うかどうかは知らないが、 フォームの表示が済んだらすぐ程度でよかったらShownイベントでいいんでない?
- 238 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:24:00 ]
- プロパティの get 内でウェブアクセスして情報取得をしたいのですが、問題ありますでしょうか?
それともメソッドにすべき?
- 239 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 18:44:04 ]
- >>237
それは試してましたが、 Loadから呼ばれる関数内から300ミリ待たせたかったので、 Shownだと早すぎてアウトみたいです。 とりあえず暫定的にタイマー使っておこうかと思います。
- 240 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 19:45:54 ]
- >>238
さすがにそれは絶対ダメ メソッドどころか専用のクラス作ってもいいくらいだ
- 241 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 20:31:19 ]
- >>240
だめですか・・・ 大人しく SetXX と IsXX を作ります。 ガイドライン見てみるとたしかに書いてありますね。 msdn.microsoft.com/ja-jp/library/ms229054.aspx より >以下の場合は、プロパティではなくメソッドを使用してください。 > 操作がフィールド セットの場合よりも格段に低速の場合。 > スレッドのブロックを避けるために非同期バージョンの操作を提供することも検討している場合は、 > プロパティでは操作の負荷が大きくなりすぎる可能性があります。 > 特に、初期化時以外にもネットワークやファイル システムにアクセスする操作は、 > 多くの場合、プロパティではなく、メソッドにする必要があります。 多くの場合って書いてあるけど、例外的にOKな場合もあるんだろか・・・
- 242 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 20:38:40 ]
- バインディングやリフレクションの都合でどうしてもプロパティにしたい場合はあるだろうな
- 243 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 20:49:39 ]
- じゃあ、form上の複数のコントロールのenable値を変えたい時にプロパティで設定するのはおk?
- 244 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 21:27:07 ]
- >>243
論理値でだとすると微妙。 一度にfalse/trueにする機能ならメソッド推奨。 複数コントロールのenable値の組み合わせは論理値じゃ返せないだろうし、 そしてget無しのset専用プロパティはガイドライン違反だから。 ※ 無理矢理にでも返すとか言い出すなら「ご勝手に」かな。
- 245 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 22:22:27 ]
- 副作用起こすプロパティ作って、うまいことやった気になるのは初心者によくあること
HogeControl.Enadled = true; これで他のコントロールが無効になったり ネットワーク通信始めるようになったら、次にソース見たときに それが本当に何をやっているのか中まで全部見ないと理解できないものになる 小さいプログラムのうちはなんとかなるが、大きくなるにつれて たまねぎの皮を剥くような精神力の戦いに引きずり込まれることになる
- 246 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 22:28:51 ]
- >>245
どういう意味で「副作用」と言っているのか不明瞭な気がするが、 それは抽象化と命名が適切かどうかという問題であって、 「それ」がプロパティかメソッドか、という問題ではないと思うが。
- 247 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 22:50:25 ]
- メソッドは操作、プロパティはデータを表すのが一般的だとガイドラインに明記
されているし、俺もそう思う。 抽象化と命名の問題かもしれないが、区別して使うに越したことはない。
- 248 名前:243 mailto:sage [2009/11/08(日) 22:51:48 ]
- >>244
一括ではない。 組み合わせをcase式で処理してる。 さらにいえば、それは親フォームにある共通のコントロール。 getsetで渡す値はenumな値で表示モードです。 子フォームからgetsetして共通コントロールの制御を親のプロパティで行い、子は自formのコントロールの制御をおこなう。 状態としてコントロールの管理をしたかったんた゛。
- 249 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 23:09:08 ]
- >>248
それは別にいいんじゃないの?
- 250 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 23:10:25 ]
- それはイベント使った方がいい気がする
せっかく親フォームを抽象化しようとしているみたいなのにもったいない
- 251 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 23:38:54 ]
- XmlSerializerでメンバをシリアライズ/デシリアライズする際、
独自の日付方式で書かれた文字列をDateTimeに変換したい場合に 属性のみの記述で変換することは不可能でしょうか? それとも大人しくラッパークラスを作るしかないんでしょうか? ・日付文字列(W3Cで定義された形式とは違う) Sat Jan 24 22:14:29 +0000 2009 ・メンバ [System.Xml.Serializer.XmlElement("date")] public DateTime Date {get; set;}
- 252 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 00:01:57 ]
- >>251
言ってることが支離滅裂に聞こえる。 独自の日付方式で書かれた文字列って何? >public DateTime Date {get; set;} このプロパティの型はDateTimeであって文字列ではないと思うけど。
- 253 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 00:05:29 ]
- >>252
カスは黙ってろ
- 254 名前:ISO 8601 mailto:sage [2009/11/09(月) 00:09:55 ]
- まあ、アメちゃんに国際規格とか言っても、北米が全世界で他は異世界と思ってるしな。
- 255 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 00:29:33 ]
- DateTimeは構造体ダス
- 256 名前:251 mailto:sage [2009/11/09(月) 00:30:22 ]
- >>252
XML上の「文字列」をDateTime型のプロパティにデシアライズしたい、というわけです。 その際、W3Cで定義された形式の日付文字列は特になにもしなくてもDateTime型に相互変換出来るんですが、 >>251 で挙げてるようなW3C標準じゃない形式の場合は変換してくれないんですよ。 で、属性にフォーマット指定したり変換用のデリゲートとかクラス指定したりして シンプルに書く方法はないのかなぁと・・・ >>254 REST API実装してるアプリが返す日付形式って結構ばらばらな上適当ですよねぇ。
- 257 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 00:36:45 ]
- DateTimeの書式を決めるカルチャ設定はスレッドごとに云々
DateTimeFormatInfo使えんかね
- 258 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 00:39:13 ]
- >>256
そういうことなら、(当たり前のこと言うなと思うかもしれないけど) >public DateTime Date {get; set;} このプロパティにはXmlIgnore属性をつけておいて、このプロパティの値を 「独自の日付方式」の文字列で設定/取得するデシリアライズ用のダミーの プロパティーを用意するだけじゃないの?
- 259 名前:251 mailto:sage [2009/11/09(月) 01:04:58 ]
- >>257
シリアライザの方はカルチャ設定の書式ではなくW3Cの仕様にしたがって変換してるみたいです。 >>258 そうするとパブリックな日付のプロパティが2つ出来てしまうわけですよね。 あんまり無駄なパブリックメンバは作りたくないというのが正直なところです・・・ とりあえず、IXmlSerializable を実装した DateTime の子クラスを作って使うことにしてみます。 W3C規定の形式以外はこれが正解になるんだろか?
- 260 名前:251 mailto:sage [2009/11/09(月) 01:07:02 ]
- って、DateTime は継承出来ませんね・・・
- 261 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 01:09:13 ]
- それは255で既に指摘されてるじゃん
- 262 名前:251 mailto:sage [2009/11/09(月) 01:30:57 ]
- ググったところ、
DateTimeをラップして IXmlSerializable を実装するクラスを書くか 日付のプロパティ持ってるクラス自体で IXmlSerializable を実装して 他のプロパティでも属性使って楽するのを放棄するかの2パターンぐらいみたいですね。 うう、なんかすっきりしないなぁ。
- 263 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 09:07:39 ]
- 以下のようなクラスがあった場合
public class A { public A(string id) {...} public string Id {get; set;} } public class B { public B(string id) {...} public string Id {get; set;}; } A.Id と B.Id がお互い代入出来なくするためにはそれぞれクラスや構造体(AidとかBidみたいな)を 作るしかないのでしょうか?
- 264 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 10:46:30 ]
- >>263
イマイチ意図が読み取れないけど GETだけのプロパティアクセスはだめなの?
- 265 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 12:37:34 ]
- >>264
Cのtypedefみたいなことがしたかったんですが、C#のusingだと別名なだけで 相互に代入してもコンパイルエラーにはならないみたいですね。 やりたかったことは、以下でした ・A.IDとB.IDはお互いに採番体系が異るのでコード中で混ざらないようにしたい (コンパイラにミスを見つけさせたい) ・ID自体にはメソッドもプロパティも不要なのでなるべくクラスは作りたくない ・プロパティはセッタもゲッタも必要 一番目か二番目を妥協するしかないのかしらん
- 266 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 12:50:14 ]
- えっ
- 267 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 12:50:38 ]
- ますますわからんw
- 268 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 12:59:22 ]
- メリットがいまいちわからんな…
- 269 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 13:15:18 ]
- >>210です
ロケーションの変更は msdn.microsoft.com/ja-jp/library/cc825750.aspx でわかったんですがキーロックの方法がわかりません 画面コピーしたモーダルウィンドウを全画面で出すとかですかね? イベントをおおもとでキャッチしてしまえばいいんですが 作成しているのがコントロールオブジェクトなので親のイベントを 横取りするのも作法としてどうなのかと思いますし、方法もわかりません ご意見をお願いします
- 270 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 13:41:33 ]
- >>269
通常はAPIのSetWindowsHookExを呼んでキーボードフック(WH_KEYBOARD_LL)でやるんだけど WMだとどうかな。一応、非公式でこのAPIそのものはあるみたいだが。
- 271 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 13:58:57 ]
- >>268
たとえば、A.IDとB.IDを受けとってなにかするメソッドHogeがあったとして、 > public static void Hoge(string aId, string bId) {....} コーディング中に第一引数と第二引数が逆になっちゃってもコンパイル時にはねて欲しいんですよ。 この場合はプロパティを直接渡すんじゃなくてクラスで渡せば問題ないですが。
- 272 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:16:40 ]
- typedefってエラーになったんだっけ?
- 273 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:21:42 ]
- >>272
俺も疑問に思ったんで今試したが普通に通るな。警告すらでなかったぞ。 #cygwinのgccで警告最大でコンパイルした結果。彼は何か勘違いしてる気がする。
- 274 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:23:56 ]
- クラス(とかstruct)で渡せばいい話じゃない
- 275 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:28:08 ]
- IDだけのクラス作ってもいいと思うよ
IDクラスからAIDとBID継承させるとか
- 276 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:40:14 ]
- >>273
VC++のclで警告レベル最大でコンパイルしても警告出ないね
- 277 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:44:43 ]
- C#やJavaは基本型もオブジェクトとして扱っていることが優れた言語仕様だと思うし
intという抽象度で表現出来る範囲を逸脱したオブジェクトなら専用のクラスにすべきだと思う
- 278 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:59:05 ]
- > 基本型もオブジェクトとして扱っている
思いっ切り間違ってるんだが
- 279 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 15:06:32 ]
- Javaとは違うのだよ、Javaとは
- 280 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 15:07:57 ]
- 構造体なんか廃止すればいいのに
- 281 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 15:08:37 ]
- >>270
ありがとうございます 一度キーワードがわかると情報がざくざくあつまってきますね SetWindowsHookExを読んでフックする方法の弱点として フックを登録できるのが1つだけのようです なので他のアプリが使ってたら不具合が出たりするようです サブクラス化というキーワードも出て来ましたが、これは フックするというより盗み見するだけですか? 情報が集まったので方針を決めたいと思います ありがとうございました
- 282 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 15:22:43 ]
- そんなことないです
グローバルフックもローカルフックもCallNextHookExってのを使ってチェーン状に管理しています サブクラス化はイベントの起動に利用するだけでメッセージ潰したりはできません
- 283 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 16:18:57 ]
- まあキーロックが目的なら握りつぶすわけで、どんな方法でも
他のキー入力当てにしてるプロシージャに影響出ないわけないなw
- 284 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 16:41:18 ]
- private ContextMenuStrip cms_tasktry = new ContextMenuStrip();
と自分で書いて関連付けた時に最初のクリックではメニューが表示されず 二回目以降にしか表示されるのですがこれを最初のクリックで表示する 方法はないでしょうか?。 また以下のように書いた場合にexitをクリックしてもタスクトレイのアイコンが 消えないのですが、これを消えるようにできないでしょうか?。 private NotifyIcon tasktry = new NotifyIcon(); cms_tasktry.Items.Add("Exit").Click += delegate(Object obj, EventArgs ea) { tasktry.Visible = false; Close(); };
- 285 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 16:55:53 ]
- tasktry.Dispose() 呼んだらどうかな。
- 286 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 17:00:44 ]
- って>>284のだけで1回のクリックでメニュー出るし終了時に消えたけど。
環境は?
- 287 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 17:13:22 ]
- Openingで書いているせいでしょうか?
private void Form1_Load(object sender, EventArgs e) { cms_tasktry.Opening += new System.ComponentModel.CancelEventHandler(cms_Opening); } private void cms_Opening(object sender, EventArgs e) { cms_tasktry.Items.Add("Exit").Click += delegate(Object obj, EventArgs ea) { tasktry.Visible = false; Close(); }; } >>285 だめでした >>286 XP Ver2010 SP3 VC2010 です。
- 288 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 17:50:25 ]
- Openingでやってる理由は?
Load時に一緒にやればいいじゃない。 アイコン消えない理由はそれとは違うようだが。
- 289 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 17:57:06 ]
- >>288
ログイン処理した時にメニューを書き換えているからですがnameでTextを 書き換えたり非表示にしたりする手もありますね。
- 290 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 18:05:13 ]
- まあ何回かやってみたけど、Openingイベント時にメニューが1つもないと出ないね。
その時に追加しても遅いみたい。
- 291 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 18:07:18 ]
- >>290
!するとLoad時にゴミを1つつけておけばいいのかな 試してきます
- 292 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 18:07:30 ]
- de?
- 293 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 19:50:07 ]
- System.Threading.Thread.Sleep(3000);
this.Storyboard1.Begin(); このコードは3秒待つまで2行目は実行されないですよね?
- 294 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 19:56:29 ]
- 試せば?
- 295 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:09:24 ]
- 普通、次の行の処理はしないと思うんですが、2行目の処理が3秒飛ぶんです。
あり得ますか?
- 296 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:15:24 ]
- 飛ぶなんて俺様用語で言われても
飛びます飛びますってかw
- 297 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:26:18 ]
- GUIのスレッドでSleepしちゃダメだよ
Storyboard使ってるんだったら3秒後にアニメーションをスタートするアニメーションを作れるだろ
- 298 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:30:18 ]
- 記事クラスと、記事のコレクションである掲示板クラスがあるとして、
記事の削除メソッドを実装するとしたら記事クラスと掲示板クラスの何方が適当でしょうか?
- 299 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:32:12 ]
- クラスってなんですか?
- 300 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:36:00 ]
- 掲示板クラスの方に実装するのが適当
- 301 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:36:00 ]
- >>297
GUIのスレッドではSleepは機能しないと覚えておけばいいんですか? この3秒にSleepではなく処理を入れたいんですが、 まさかGUIスレッドの中では同時に処理できる行はガンガン並行処理して次の行、次の行が実行されていくんでしょうか? めちゃくちゃなんですけど
- 302 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:41:43 ]
- GUIだとGUI自体の機能もSleepした後でその後の文が実行される
- 303 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:42:09 ]
- >>301
お前の頭がむちゃくちゃだよ
- 304 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:42:17 ]
- 違う。スリープさせるとGUIがフリーズするからやってはいけない。
this.Storyboard1.Begin();は絶対に3秒経過するまで実行されない。その間GUIはフリーズする。 基本的にSilverlightは(Silverlightのスレに書き込んでるだろ)GUIスレッドでのSleep禁止ということになってるから 何が起こっても文句は言えない。WPFやSilverlightのアニメーションは時間に依存するからややこしい。
- 305 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:47:00 ]
- WMPコンポーネントを使ってmp3プレイヤーを作っているのですが、
WMP9からWMP11にアップデートすると、 そのソフト自体の起動や処理が重くなったように感じます。 これは仕方無い事なんでしょうかね?
- 306 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 20:58:28 ]
- 自分でデコードしてDirectSoundで鳴らしたら
- 307 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:10:12 ]
- お前のプログラムがめちゃくちゃなんだろうよ
- 308 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:10:16 ]
- DirectSoundはプレイステータス変更時のようなイベントハンドラは提供されてますか?
それが無いと不便で不便で・・・
- 309 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:16:33 ]
- >>304
silverlight限定の仕様だったんですね FormGUIの基本なのかと思っちゃいました。 silverlightと書き込まなかったので一生解決できないところでした ありがとうございます!
- 310 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:19:55 ]
- >>308
いやDirectSoundって自分でバッファに波形データを直接書き込んでいくんだぞ 何でもできるが何もできない >>309 Silverlightに限らずGUIで時間のかかる処理をしてはいけない。 一応WPFやWinFormsではそれによってGUIがフリーズするのを回避する方法が用意されてるけど やらないに越したことはない。 Silverlightに限ってはそういう回避方法が無いので絶対ダメ。
- 311 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:19:55 ]
- めちゃくちゃとむちゃくちゃってなにか違うの?
- 312 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:27:16 ]
- >>310
ありがとうございます。 DirectSoundで調べてみたいと思いますが、なんだか難しそうですね。。
- 313 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:43:18 ]
- 滅茶苦茶
無茶苦茶 滅無
- 314 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 00:09:25 ]
- C#でメッセンジャーみたいな物を制作しようと思い、
サーバーの部分だけ作ってみてビルドして、実行するとフリーズしてしまうんですが、 原因が分かりません。教えていただけないでしょうか?初心者ですいません。 public void ServerStart() { System.Text.Encoding enc = System.Text.Encoding.UTF8; int port = 9991; TcpListener listener =new TcpListener(IPAddress.Parse("127.0.01"), port); listener.Start(); TcpClient tcp = listener.AcceptTcpClient(); NetworkStream nss = tcp.GetStream(); MemoryStream mss = new MemoryStream(); byte[] resBytes = new byte[256]; int resSize; do { resSize = nss.Read(resBytes, 0, resBytes.Length); if (resSize == 0) { textBox2.Text = ("クライアントが切断しました"); //Console.ReadLine(); return; } mss.Write(resBytes, 0, resSize); } while (nss.DataAvailable); string resMsg = enc.GetString(mss.ToArray()); textBox2.Text = resMsg; mss.Close(); }
- 315 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 00:27:45 ]
- TcpListener.AcceptTcpClientメソッド
AcceptTcpClient は、データの送受信に使用できる TcpClient を返すブロッキング メソッドです。ブロックしないようにする場合は、Pending メソッドを使用して、接続要求が受信接続キュー内で使用可能かどうかを確認します。 ではないのか?
- 316 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 00:47:28 ]
- >>315
解決できるかどうか分かりませんが、Pending メソッドについて調べてきます。
- 317 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 02:15:12 ]
- たとえPendingで確認しても、GUIスレッドで処理してたらクライアントが切断するまで止まるじゃん
- 318 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 09:40:49 ]
- 非同期処理にしろよ・・・・
- 319 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 09:43:53 ]
- クライアントからの切断は取れたり取れなかったりするからね
- 320 名前:315 mailto:sage [2009/11/10(火) 15:30:23 ]
- >>317
>>318 >>319 コメントありがとうございます。 非同期通信についても調べてみます
- 321 名前:314 mailto:sage [2009/11/10(火) 15:31:37 ]
- ↑314でした。すいません><
- 322 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 15:48:23 ]
- 非同期通信と通信での非同期処理は別の話だからなw
- 323 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 18:05:30 ]
- 流石に一緒にする奴はいないと思うぞwwww
- 324 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 18:08:54 ]
- >>284 は kb135788 かな
- 325 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 18:09:09 ]
- ここにいるぞ
- 326 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 20:32:36 ]
- BackgroundWorker_DoWorkでList<>.Sortを実行中にキャンセルボタンをおされたらを処理を中止したいんですが
何かいい方法ないですか? 自分でループしてる処理ならBackgroundWorker.CancellationPendingをチェックして終了すれば いいけど、List<>.Sort の実行中は何もできないんで。 次の様な処理書いてます。 private void backgroundWorker1_DoWork( object sender, DoWorkEventArgs e ) { BackgroundWorker worker = sender as BackgroundWorker; List<string> list = new List<string>(); Random random = new Random(); for( int i = 0; i < 1000000; i++ ) { if( worker.CancellationPending ) { e.Cancel = true; return; } list.Add( string.Format( "{0}";, random.Next( 1, 1000000 ) ) ); } list.Sort( delegate( string s1, string s2 ) { return int.Parse( s1 ).CompareTo( int.Parse( s2 ) ); } ); e.Result = list; }
- 327 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 20:46:48 ]
- デリゲートとか何の役にたつんだよぽ
- 328 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 20:57:43 ]
- なきゃないで問題ない
- 329 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:21:54 ]
- デリゲートなかったらメソッド持ってるクラス渡すか継承して実装するかの二択になるからなぁ。
- 330 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:35:48 ]
- >>346
yield
- 331 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:38:01 ]
- おっ、書けた。
>>326 yield を使って止められるようにすればいい。 貼ったソースはWorker操作のためのサンプルだと理解しているが、 もし本気コードならいちいちintに変換しながら比較するなんて馬鹿なことはやめたほうがいいぞ。 一括でソート済みsetに放り込んで再び取り出したほうがよほど速い。
- 332 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:42:18 ]
- yieldでどうやってlist.Sortを止めるんだよ
無理矢理止めるならlist.Sortに渡すコールバック内で例外投げるくらいしかないと思う
- 333 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 21:54:47 ]
- 現在アクティブなコントロールが、どの型か調べて
型に応じて動作を行うというものを作っております たとえば、WebBrowserならMessageBox.Show("WebBrowser","種類"); みたいな感じで アクティブなコントロールをthis.ActiveControlで取得まではできるのですが その取得したコントロールの型同士を比較するにはどうすればいいでしょうか
- 334 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 22:00:45 ]
- あるオブジェクトが特定の型かどうかを調べるにはisを使う
あるオブジェクトの型名などを取得するにはGetType
- 335 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 22:03:50 ]
- >>334
if(this.ActiveControl is WebBrowser) で比較できましたありがとうございました
- 336 名前:デフォルトの名無しさん [2009/11/10(火) 22:05:32 ]
- ボタンをショートカットに対応させたいんだけど
ボタンをクリックしたことにするにはどうすればいいでしょーか
- 337 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 22:05:49 ]
- あらま
さげわすれごめんなさい
|

|