有一個COM DLL(VC6.0 ATL嚮導內置),我想用appdomain的身份來暗示一個進程創建多個appdomain,每加載一次這個COM DLL和保證大家COM DLL具有分離的存儲器空間appdomain加載一個COM DLL多次並保持內存隔離
例如
的AppDomain域1 = AppDomain.CreateDomain( 「D1」)。 AppDomain Domain2 = AppDomain.CreateDomain(「D2」);
object obj1 = Domain1.CreateInstanceFromAndUnwrap(「UnManagedCOMDLL.dll」,「UnManagedCOMDLL.ShowTag」);
對象OBJ2 = Domain2.CreateInstanceFromAndUnwrap( 「UnManagedCOMDLL.dll」, 「UnManagedCOMDLL.ShowTag」)
在該DLL,有一個全局變量,每次它加載,它++時間。雖然com在不同的appdomain中加載,但全局變量是相互共享的。
爲什麼會出現這樣的結果?應用程序域應該保持內存iasolation,但它失敗。
但是,要管理的dll,appdomain可以工作。
幫幫我!!!!!
一個AppDomain只保持內存分離w.r.t.託管代碼作爲CLR/JIT實現隔離,它實際上並不存在,它是一個人工構造。當你在混音中獲得本地代碼時,它們都會消失,基本上你幾乎無法做到。 – tyranid
非常感謝,這是我第一次在這裏問問題。你是第一個答案。因爲我的軟件(DLL)是由VC6.0開發的,現在只有一個客戶端可以啓動它。在未來,我希望一個客戶推出它的多個。 任何想法都歡迎。 – Michaelf