VB.NET質問スレ (Part10)at TECHVB.NET質問スレ (Part10) - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト550:548 皇紀2665/04/01(金) 16:55:36 >>549 む、マジすか・・・ 551:デフォルトの名無しさん 皇紀2665/04/01(金) 17:03:07 >>547 詳細な解説、ありがとうございます 30回くらい読み返して、ようやく意味が分かってきました ちなみに、コントロール(とか、そのスレッド内で作成されたオブジェクト)に関わらないメソッドなら そのまま呼び出してもいいという理解でよろしいですか? 数値・文字列等の演算系関数とか あ、でもStringすらクラスですよね ということは、クラスのスコープが大事ということでしょうか? 呼び出すメソッド内で作成され、消滅するクラスオンリーで構成されたメソッドなら、そのまま呼んでよし、とか プロジェクトや、フォーム全体で使用しているクラス(グローバルやソースの上の方で宣言したりするもの)を触るメソッドなら、デリゲートで呼ばないとだめ、とか マルチスレッドは奥が深いですね むずかしー 552:デフォルトの名無しさん 皇紀2665/04/01(金) 19:05:46 >>551 > ちなみに、コントロール(とか、そのスレッド内で作成されたオブジェクト)に関わらないメソッドなら > そのまま呼び出してもいいという理解でよろしいですか? > 数値・文字列等の演算系関数とか 勿論。 というかInvokeしたら全てコントロール作成スレッドで実行される事になって、マルチスレッドじゃなくなってしまう。 > あ、でもStringすらクラスですよね > ということは、クラスのスコープが大事ということでしょうか? いいや、スレッドを超えてオブジェクトを共有して構わない。 寧ろオブジェクトを共有できる事にスレッドの意味がある。 Invokeしなければならないのは、コントロール(System.Windows.Forms.Controlとその派生クラス)を操作する時のみ。 ただし2つのスレッドから同時にあるオブジェクトを操作してしまったりすると問題が起こりうるから注意が必要だ。 例えばあるスレッドでArrayListをFor Eachしている時に、別のスレッドでこのArrayListにAddしたりRemoveしたりしたら、正しくFor Eachできなくなる。 そういうのを避けるためにSyncLockステートメントなどがある。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch