2013-10-09 33 views
2

多個AppDomain是否可用於隔離非託管dll中的內存? 只是爲了澄清,如果我有一個使用一些內部靜態全局變量的非託管dll,如果我在不同的應用程序域中加載該非託管dll會發生什麼?我可以安全地假設dll將被加載到不同的地址空間,因此它們擁有自己的共享數據副本?AppDomain(s)and unmanaged dll

回答

3

不,這是不可能的。 AppDomain是純粹的管理概念。非託管DLL狀態是進程範圍內的,並且只能加載一個DLL副本。可能的破解是使用不同的名稱創建DLL文件的副本。然而,它的規模非常小,而且銷售很討厭,不得不編寫委託並使用LoadLibrary + GetProcAddress來綁定它們。

清潔的替代方法是使用加載DLL的單獨幫助程序進程。通過像WCF這樣的互操作機制與他們交談。

+0

像往常一樣,謝謝。 –