投稿者 Asians  () 投稿日時 2008/7/20 17:22:00
お世話になってます 
VB6の頃は標準モジュールに色々な関数を作った物を利用してプログラムを作っていましたが内容にもよるのでしょうがVB.Netではクラスを利用して同様のことをする方が効率が良いように聞きました 
クラスに記述するメソッドには共用メソッドと非共用メソッドがあって共用メソッドはインスタンスに属するメンバへのアクセスをしないのであればインスタンスを生成せずにメソッドが利用できるのですよねぇ 
この感覚はVB6の頃の標準モジュールの雰囲気に近く馴染みやすいのでVB6の頃に作った関数をこのクラスの共有メソッドで作ろうと思うのですがVB.Netはマルチスレッドがあって下手に共用メソッドを使っているとバグのもとになると知人に指摘されました 
この知人も別の人に注意されただけでマルチスレッドの場合の共有メソッドの危険性やマルチスレッドそのものがよく理解できていないそうなので,私なりにマルチスレッドを調べたところマルチスレッドによってメソッドが重複して実行されることがこの危険性なのかなぁと考えました. 
更に調べてみるとマルチスレッドの同期を取るためにSyncLockステートメントというのが存在し,これを共用メソッドの入り口と出口で利用すれば重複して実行されるのが防げるのではないかと思うのですがこの方法で良いのでしょうか 
また共用メソッドの危険性は他にもあるのでしょうか