2008-12-31 82 views
0

我知道當創建一個DLL並聲明項目爲「共享」(C#中的靜態)時,它們在第一次調用時實例化,然後該對象引用作爲單個引用繼續存在。在包含GAC的程序集中處理共享

因此,聲明共享字符串屬性一旦設置可以再次調用來檢索相同的值。然後,線程安全是應用程序領域的一個主要關注點。

在應用程序域之外發生了什麼。如果我們將程序集放入全局應用程序緩存(GAC)中,將存在多少個實例?

例如,一個名爲「MyFileName」的靜態屬性在GAC的.dll中。

然後我們有兩個應用程序調用GAC'ed .dll。 「MyFileName」會存在多少個實例?將來自應用程序的MyFileName的更改複製到Application Two使用的值?

回答

2

該DLL在AppDomain內實例化,因此存在與AppDomain一樣多的不同副本。數據不會在AppDomains之間傳輸。將GAC中的DLL放在一個地方讓所有東西都可用,它不會改變.net的內存模型。

+0

這就是我的想法,但想100%肯定! – 2008-12-31 21:02:25