VB.NET質問スレ (Part10)
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドの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ステートメントなどがある。
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
4973日前に更新/240 KB
担当:undef