2009-06-05 17 views
2

さまざまなオブジェクトに共通のコードにアクセスするVB.NETアプリケーションがあります。私は現在「共有クラス」を使用しています(クラスは共有できませんが、すべての変数とメソッドは「共有」とマークされています)。VB.NETのさまざまなオブジェクト(共有クラス、モジュールなど)の可視度

私の懸念は、このオブジェクトの可視性です。ユーザーが同じデスクトップ上でアプリケーションの2つのインスタンスを実行した場合、共有クラスの同じ「インスタンス」を使用しますか?つまり、アプリケーションの2つのコピーは同じカウンタをインクリメントして同じ変数を使用しますか?

さらに、同じマシン上の2つのユーザースペースは、各ユーザーがコピーを実行すると、その2つのコピーが干渉しますか?

おそらく、私は "共有"概念を弱体化しており、これを行うもっと良い方法があります(クラスの代わりにモジュールを使ってコードを共有する人もいます)。オブジェクト(変数とメソッドの両方)をアプリケーション全体で共有するが、他のアプリケーションインスタンスとは別に保つ方が良い方法はありますか?

更新日: 私が書いているアプリケーションでは、自分の「優先」方法に関する質問に答えて、ユーザーが実行している別のインスタンス間でもデータを非公開にする必要があります。その場合、複数のインスタンス間でデータを共有したくないので、共有クラスまたはモジュールを使用することによる副作用が心配です。ご質問ありがとうございます。

+0

あなたは、実際にあなたの好みのシナリオが望ましいと述べることなく、 "これを行うもっと良い方法"があるかどうかを知ることができます。ユーザーの複数のインスタンス間で変数を共有できますが、2人の異なるユーザー間で変数を共有できますか? – AnthonyWJones

答えて

3

アプリケーションの各インスタンスは、1人または複数のユーザーが実行しても、共有フィールドのコピーが表示されます。

This blog entryについて詳しく説明します。ここでは、静的/共有フィールドのスコープが、デフォルトのコンテキストではなくスレッドのような項目であるAppDomainについて説明しています。

3

共有値(またはC#の場合は静的)は、Appドメインにのみ共通です。

複数のApp Domainsを同じプロセスにロードすることも可能で、それぞれ独自のShared値セットを持ちます。

関連する問題