投稿者 刈谷勇  () 投稿日時 2008/7/21 18:54:00
Asiansさん、はじめまして。 
自分もVB勉強中なので、わかる範囲でお答えします。 
 
>>下手に共用メソッドを使っているとバグのもとになると知人に指摘されました  
 
処理の内容によると思います。 
概略でいうと、 
メソッドの処理が自分の中のみに影響するもの、 
たとえば、引数で与えられた金額の消費税を計算する関数では、いくら並列処理になっても問題ないと思います。 
 
逆に、自分の関数外へ影響を及ぼすものには注意が必要だと思います。 
たとえば、メソッド内でSQLのテーブルを更新するような処理の場合、ほぼ同時にこの関数を呼ばれた場合、ロジックによっては、実際にSQLを書き出すタイミングが関数を呼ばれた順序と逆転してしまうこともあると思います。 
 
>>更に調べてみるとマルチスレッドの同期を取るためにSyncLockステートメントというのが存在し,これを共用メソッドの入り口と出口で利用すれば重複して実行されるのが防げるのではないかと思うのですが 
 
実は自分もつい最近調べたばかりなので、実際に検証はしていないのですが、 
[MethodImpl(MethodImplOptions.Synchronized)] 
をメソッドの頭に書いておけばいいと思います。 
 
有識者の方 
間違った発言がありましたら、ご指摘願います。