質問

DLLを作成し、アイテムを「共有」として宣言すると、 (C#の静的)最初に呼び出されたときにインスタンス化され、そのオブジェクト参照は単一の参照として存続します。

したがって、一度設定された共有文字列プロパティを再度呼び出すと、同じ値を取得できます。そして、そのスレッドセーフは、アプリケーションドメイン内の主要な関心事です。

アプリケーションドメインの外部で発生すること。アセンブリをグローバルアプリケーションキャッシュ(GAC)に配置すると、いくつのインスタンスが存在しますか?

たとえば、" MyFileName"という静的プロパティGACされた.dll内。

次に、GAC'ed .dllを呼び出す2つのアプリケーションがあります。 " MyFileName"のインスタンスの数存在するだろうか? Application OneからMyFileNameへの変更は、Application Twoが使用する値にコピーされますか?

役に立ちましたか?

解決

dllはAppDomain内でインスタンス化されるため、AppDomainと同じ数の異なるコピーがあります。データはAppDomain間で転送されません。 DLLをGACに配置すると、すべてを1か所で利用できるようになります。.netのメモリモデルは変更されません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top