1 名前:デフォルトの名無しさん [2010/05/16(日) 23:13:52 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 前スレ C#, C♯, C#相談室 Part58 pc12.2ch.net/test/read.cgi/tech/1269261310/ Visual C# 2008 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>1-5 くらい
384 名前:デフォルトの名無しさん [2010/06/08(火) 08:05:10 ] >>383 WinFormだと透過を扱うのは面倒だよ
385 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 08:31:38 ] OnPaintの内部で好きなように描けばいい。
386 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 10:13:32 ] PictureBoxをはみ出す可能性があるなら厄介 OnPaintだったら一切コントロール使わずに重なる可能性のあるもの全部 自分で描かないといけない
387 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 10:32:26 ] どのレベルの運用なんだろう? 例えばユーザーがドラッグドロップした部分に枠を描画してそれを消したりすることが出来なければいけないなら 自分でレイヤーみたいなデータを順番に記憶してクリックされたら枠線描画して移動できるようにする とかいろいろ考えられるけど
388 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 11:33:45 ] 透明なウィンドウを重ねるのが確実 そういうの多用するんだったら努力するだけ時間の無駄だからさっさとWPFへ
389 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 23:31:04 ] FtpWebRequestのAbort忘れかも。
390 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 02:02:52 ] 枠引くくらいなら枠線用のPictureBoxなどを配置して上に置いて Regionで内側を切り出すのがほどほど楽だと思うよ。
391 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 05:21:48 ] コントロールの重ね合わせは数が増えると重くなるからスピードが必要ならDirectX
392 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 09:55:17 ] C#2.0 マルチスレッドで質問です short型の変数Aがあるとします。 メインスレッドはある変数Aを読み込むだけ サブスレッドはある変数Aを書き換えるだけ 上記のような状態で通常 書き込み時に適当なオブジェクト等を使用してロック・読み込み時もロック するような気はするんですが 仮に 両方ロックしない場合で サブスレッドで 変数Aが 0(16bit全てOFF)の値になっている時に 変数Aを65535(16bit全てON)に変更したとします。 この場合変数Aは限りなく瞬間的に全てのビットを順番にONしていくと思うのですが、 その途中にメインスレッドが読み取りを行った場合に例えば8bitだけONになったりしている状態を読み取る場合ってあるのでしょうか? ちょっと質問の仕方が微妙かもしれませんがお願いいたします。
393 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 10:18:11 ] CPU命令の最小単位考えたらわかるべ
394 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 10:21:15 ] >>392 > この場合変数Aは限りなく瞬間的に全てのビットを順番にONしていくと思うのですが、 > その途中にメインスレッドが読み取りを行った場合に例えば8bitだけONになったりしている状態を読み取る場合ってあるのでしょうか? 32bitプロセスでは32bitまでならアトミック そんなの気にするよりvolatile
395 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 22:28:13 ] >>392 download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol3_i.pdf この資料のp.258に > インテルPentium 4 プロセッサ、インテルXeon プロセッサ、P6 ファミリ・プロセッサ、 > インテルPentium プロセッサ、Intel486 プロセッサでは、キャッシュ可能メモリへのア > クセスで、バス幅、キャッシュ・ライン、ページ境界をまたがっているものは、アト > ミック操作が保証されない。 とあるので、そういう状況が起こる可能性はゼロじゃない。 本当にアトミック操作が必要な場合は、あなたの言うとおり、ロックするなりアトミック操作 命令をつかうなりする。
396 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 23:29:37 ] shortの変数がそれらをまたがる可能性があるということか
397 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 23:46:29 ] C#の場合はアライメント境界整列は保証されるとどっかで読んだ記憶が まあ将来に渡って保証されてる訳でもないだろうけどな
398 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 00:46:26 ] MSDNのInterlocked.Readとか読んでると保証されるとも取れるようなことが書いてあるよ
399 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 01:13:01 ] StructLayoutした構造体でも適用されるのだろうか・・・ マーシャリング機構が魔法を使ってくれてるかもしれないから否定しているわけじゃない。
400 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 02:10:54 ] >>392 それやると大抵は読み込むだけのスレッド側の処理は最適化で消えて読み込まなくなるから 中途半端に読み込む状態を仮定する以前の動作になるよ。
401 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 02:52:11 ] volatileぐらいわかるよバカやろう
402 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 03:34:05 ] >>392 なんでそういう事をわざわざ考えるのかよくわからないけど ReaderWriterLockつかえば解決とか言う話でもないの?
403 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 03:38:57 ] アトミックな操作が本当にそうなのかについて疑問に思ったんじゃないの? いいことだと思うよ。
404 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 06:40:13 ] なんでそうなるのかとかは知っといた方がおもしろいよね。
405 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 12:34:40 ] GCが配置する時に8バイト境界にするってどこかで見た覚えがあるんだがどこだったかな
406 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 12:42:42 ] レジスタのビット書き換えフェーズ中に割り込みか同時読み込みできる そういうすごいCPUの話じゃないの?
407 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 13:36:17 ] >>392 short型ならすべてのビットが同時に書き換えられる。1ビットずつ順番ではない。 もちろんプログラムが1ビットずつ書き換えるように作ってあれば話は別だけど、単純に A = 0; A = 65535; のように代入するだけならすべてのビットが同時に変更される。 もし中途半端な状態が発生したら、それはメモリの故障。
408 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 13:51:19 ] >>406 物理コアが複数だと、そう言い切れなかったりする 上でも何回か出ているアライメント境界の問題で、 複数回フェッチが起こる可能性があるからだ ここらはキャッシュコヒーレンシとか色々関係しててややこしい
409 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 15:08:02 ] 横レスなんだけど >>407 いろいろ読む限り仮にこれが32bitOSでLongだったら書き換えは複数回に分割されてしまうということなんだろうか?
410 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 15:28:17 ] 仕様としてはどうなっているんだ?
411 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 15:50:08 ] 5.5 変数参照の分割不能性 bool、char、byte、sbyte、short、ushort、uint、int、float の 各データ型および参照型の読み取りと書き込みは分割不可能です。 また、上記の型を基になる型に持つ列挙型の読み取りと書き込みも 分割不可能です。long、ulong、double、decimal などのその他の データ型、およびユーザー定義型の読み取りと書き込みは、分割不可能 であることが保証されていません。この目的で設計されたライブラリ関数を 除いて、インクリメントやデクリメントの場合などでの分割不可能な 読み取り/変更/書き込みは保証されていません。
412 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 19:34:34 ] >>411 CPUレベルではともかく、CLRレベルでは保証されてるってことか。
413 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 20:38:48 ] 32bit以上での実装を事実上想定しているわけだ。
414 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:36:58 ] 16ビットCPUだったらintも16ビット長じゃね? .netが16ビットでも動くかは知らんけど
415 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:41:29 ] intは32bitと決められている。
416 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:50:44 ] intが可変な言語って数えるほどしかない
417 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:52:51 ] CLRは32ビットプロセスなら32ビット境界に、64ビットプロセスなら64ビット境界に整列することを保証してる。 もちろんライアウトを変えた場合は別。 だから、少なくとも32ビット以下のプリミティブ型の読み書きはアトミック保障。
418 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:53:06 ] そういう言語では組み込み型はそのまま使わずにtypedefしてサイズを固定するという アホらしいノウハウが定着してる事実
419 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:53:57 ] ああ書き方おかしかった。 ライアウト→レイアウト。 で、そういうことやってない限りは保障されてる。
420 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:56:44 ] >>402 何のためだよw
421 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:58:16 ] つうわけで現実的には、32ビット以下ならvolatil変数、 32ビットを超えるものはlockするのが簡単。
422 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 22:09:14 ] ところでlongはvolatileにできないけど IntPtrや参照型のvolatileは64bitプロセスでどうなってるんだろう?
423 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 23:33:39 ] 64bit環境なら普通に問題ないだろ。
424 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 23:38:28 ] 64ビット環境では当然64ビットの読み書きは分割不可能。
425 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 23:47:07 ] x64とia64で違ったりしないのかな
426 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 01:13:50 ] 分割「不可能」って表現はどうなんだろうねえ。
427 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 01:19:47 ] atomicの定訳がないからねえ。「不可分」で良さそうなもんだが。
428 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 01:40:34 ] 相談室の方だしアトミックとだけ言っとけば通じるんじゃないか?
429 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 02:33:51 ] 今更このスレでアトミックや分割不可能の意味がわからん奴もいないと思うんだが・・・ まぁMSDNにもそう書いてあるんだし、そのままでいいんじゃないか? というか、やっぱPGて細かく突き詰めると深いよなぁ と改めて思う
430 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 11:50:42 ] なぁ、紐づく・紐付ける・紐づいたXX って英語でなんていうんだ? てか、紐づくの語源はどっから?
431 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 12:00:03 ] そんなの 関係する とかに置き換えたらいかんの? 語源はググってくれ
432 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 12:34:12 ] そう言えば、英語と1対1な用語じゃないような気がするねえ。 link,bind,relationshipのいずれかを局面に応じて使うんじゃないかな。
433 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 12:47:27 ] associateとかもあるな
434 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 18:55:47 ] A (which is) tied together with B とか
435 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 22:53:09 ] assigned とかは? 命名スレ行きかな
436 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 18:00:58 ] wiredだな
437 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 01:55:45 ] weirdとな
438 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 13:04:54 ] ttp://techbank.jp/Community/blogs/mymio/archive/2010/03/07/25216.aspx この記事の意味わかる人いる?
439 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 13:11:10 ] 確かに全くわからない new { trueValue = new BitVector32(-1), falseValue = new BitVector32(0) }と new { trueValue = new BitArray(1)[0] = true, falseValue = new BitArray(1)[0] = false } を比較したら処理速度以前に値型と参照型の違いで前者が速いに決まってる 何がしたいのかも意味不明
440 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 13:24:00 ] >new BitVector32(-1)[(int)BitFlag.TrueIndex] BitFlag.TrueIndexは0のことだから、 >new BitVector32(-1) -1じゃなくても何を渡してもたとえ0でもTrueになるしな。
441 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 13:26:43 ] >new { trueValue = new BitArray(1)[0] = true, falseValue = new BitArray(1)[0] = false } これに至ってはビットセットしてるつもりで実は取得しかしてない気がする。
442 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 13:27:44 ] Microsoft MVPかよw
443 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 13:41:36 ] >>441 逆 設定はしてるけど取得はしてない trueValueに代入されるのはリテラルのtrue
444 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 14:10:33 ] (int16)trueが1になったり-1になったりする!大発見!スイーツ(笑) ってことか?
445 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 14:16:21 ] 回数増やすと差が開くのはGCが動くからかな? なんにせよそんなBitArrayの使い方ありえない
446 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 14:30:00 ] 本人も言ってるけど、本当に > プログラミング言語論やアルゴリズムに元々興味がなかった んだろうな。
447 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 14:42:15 ] そうだとしてもこれ普通に仕事に支障が出るレベルじゃね
448 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 14:44:24 ] Console.WriteLine("BitVector32の-1: {0}", .... そりゃ何やったって-1が出るよな。
449 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 14:53:20 ] >>440 BitVector32の仕様を理解してない? インデクサの引数をマスクじゃなく インデックスだと思っているとか。
450 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 14:54:15 ] >>438 あれ? コメント消えた?
451 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 15:07:19 ] ?
452 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 15:08:41 ] 貼ったのは本人かよwwwwww
453 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 15:13:54 ] というか記事自体消えたw
454 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 15:26:45 ] 流石はMVPだな
455 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 19:55:01 ] 丸ごと消して逃げるってのは技術者の態度としては酷いなあ 別に誰だって間違いはあるんだから、素直に分かってませんでした、でいいのに。
456 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 20:05:52 ] …ほかの記事も全部巻き込んでコメント消えたな… どうなってんだ…真面目に聞いてたのに… あーあ、どうせ荒らされたからコメント停止したとか、そういうことにされてんだろうな
457 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 20:12:09 ] まあそれぐらいで許してやれよ。 打たれ強い人ばかりじゃないんだ
458 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 20:28:22 ] 誰かコメントできっついことでも書いたか? 気づいたらもう消えてたから経過が分からん、まあおそらくはそうなんだろうけど。 しかしこれじゃ記事で気になることがあってもどうしようもないな。 techbank.jp って書籍とかも出してるからそれなりに影響力ありそうなんだが… ユーザ登録して掲示板に書けってことか…面倒な…
459 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 20:59:29 ] カエル女あわれ・・・
460 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 21:38:47 ] >>458 キツいことは書かれてたね。 言葉はキツかったけど正しい指摘ではあった。 確かに誰もが打たれ強いわけじゃないってのは分かるけど 書籍出したり、MVPだったりする人間が技術的な指摘に逃げ腰ってのはダメだよ。
461 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 21:49:30 ] そのとおり。
462 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 22:39:03 ] >>460 あれ書いたの俺なんだけど、まさか丸ごと消されるとは思わなかった。 MVPだし、本出してるし、コミュニティの運営にも積極的な人みたいだから、 反論するにせよ訂正するにせよ、少なくとも真摯な態度で答えてもらえるもんだと 思っていたんだよね。 まあ、確かに言葉はきつかったけど、まともな質問に上から目線で適当な回答をしてるのが 腹立たしかったもんでね。 残念だね。
463 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 22:46:10 ] RSSには BitVector32 vs BitArray を掲載しました ってのが残ってるけど、どんな中身だったのか分からない どっかに中身のっけてくれ
464 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 22:47:34 ] MVP事務局に、報告しといた方がいいと思う。
465 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 22:49:57 ] まゆみちゃーん
466 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 22:50:22 ] >>463 Googleのキャッシュで記事はまだ見れるね。
467 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 22:52:50 ] cache.yahoofs.jp/search/cache?p=BitVector32+vs+BitArray&ei=UTF-8&fr=sb-jane&u=techbank.jp/Community/blogs/mymio/archive/2010/03/07/25216.aspx&w=bitvector32+vs+versus+bitarray&d=HC_-Ae8_U8_v&icp=1&.intl=jp これか。何が間違ってるのかわからんw
468 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 22:55:24 ] 間違ってるというより何一つ意味を為してないんだな 書いてる本人が自分で何やってるのかわかってないからわざと曖昧に書いてるのが伝わってくる
469 名前:462 mailto:sage [2010/06/13(日) 23:02:40 ] あんまり突っ込みどころが多いから、逐一指摘してたらコメントが長くなるし 変な人だと思われそうだから、1点に絞って突っ込んだんだけどね。 いっそ高木浩光ばりに突っ込みまくった方が良かったのだろうか?
470 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 23:07:48 ] >>469 あー、私知らなかったわー。って感じの文章なんだから、もっとソフトにやってあげてもいいんじゃない。
471 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 23:08:30 ] どんなコメントだったん?
472 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 23:10:28 ] GoogleもYahooもキャッシュにコメントがないなあ Bingはキャッシュすらないし
473 名前:462 mailto:sage [2010/06/13(日) 23:17:13 ] 細かい文章は覚えてないが、 BitVector32::ItemsとBitArray::Itemsの戻り値を整数として評価すると異なる値になると あなたは言っていますが、.NetのBoolean型は整数と可換なものではないので、整数として 評価することに意味はありません。また、内部的にも1ビットの整数として実装されていますので、 整数に変換した結果は毎回同じです。-1が出力されているのは、あなたがConsole.WriteLineの フォーマット文字列に“-1”と書いたからです。 基本的なデータ型について理解していないのはあなたの方です。正当な疑問に木で鼻をくくったような 返答をする態度は非常に不愉快です。 といったところ。最後に余計なことを言っているけど、これは以前にコメントをしていた人に、 ビット操作の概念を勉強しないとこの記事は理解できないよ、というような返答をしていたので、 それに対するもの。
474 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 23:21:55 ] .NETのboolは8ビットで0がfalseで0以外がtrueじゃなかったっけ 記事の間違いは別問題だが
475 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 23:22:23 ] 記事ごと消すほどのコメントじゃないわな。
476 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 23:31:53 ] たまたま残ってたから一応書いておこう。 最初のコメント ---- > まとめると、 > BitVector32 BitArray > true -1 を表す 1 を表す > false 0 を表す 0 を表す > となります。 これはいったいどういう意味でしょうか? ---- その返答 ---- ビットフラグがONの場合がTrue、ビットフラグがOFFの場合はFalseです。 このON/OFFを数値で表した場合、BitArrayとBitVector32とではON/OFFの数値の意味が異なるという対比表になります。 そもそもビットの概念がわかっていないと、このBlogの説明に書いてある説明を理解しようとしても無理ですので、もし貴方がビットの考え方が良くわからないという場合は、 入門書籍やほかのWebサイトでその辺りを勉強してから、このBlogに書いてある意味を汲み取ってください。 ----
477 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 23:36:23 ] いきなり攻撃的な返答だな。あの日だったりしたのか?w
478 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 23:37:23 ] 記事は消えても画像は残ってるんだな ttp://techbank.jp/Community/blogs/mymio/image_5233298A.png
479 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 01:01:27 ] マルチスレッドで教えてください。 ソケットプログラミングで、受信スレッドがキューにデータを溜めて、 メインスレッドは順次データを読み出して処理するというプログラムを書いています。 メインスレッドはキューにデータが無ければ受信するまで待機したいのですが、 一般的にどう実装するものでしょうか? とりあえず作った受信スレッドは、 Monitor.Enter(obj); 受信ループ キューに格納 Monitor.Exit(obj); Monitor.Enter(obj); ループEnd Monitor.Exit(obj); 受信の都度Exitしてメインスレッドに所有権を明け渡しています。 動作には問題なさそう?なんですけど、なんかスマートじゃないというか。。。
480 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 01:05:17 ] AutoResetEventつかう
481 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 01:12:17 ] lock (q) ループ開始 }
482 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 01:13:28 ] ミスって書きこんじまった、なしなしな
483 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 01:16:31 ] BlockingQueue系統を使うのが定石だが、 .NET 4より前にはなかったな確か。 BlockingQueueとか実装はそこらに転がってそうだが。
484 名前:デフォルトの名無しさん mailto:sage [2010/06/14(月) 01:19:51 ] >>479 .Net4が使えるなら BlockingCollection<T> 一択。 つかえないなら、↓こういう同期機能付きコレクションを使う。 www.codeproject.com/KB/recipes/boundedblockingqueue.aspx いずれにしても、そういうパターン(いわゆるProducer-Consumerパターン)では 同期機能はキューに持たせるのが一般的。で、Producer(この場合は受信スレッド)は データをキューに入れるだけ、Consumer(この場合はメインスレッド)はキューから 取得するだけにする。