2013-10-09 98 views
2

多个AppDomain是否可用于隔离非托管dll中的内存? 只是为了澄清,如果我有一个使用一些内部静态全局变量的非托管dll,如果我在不同的应用程序域中加载该非托管dll会发生什么?我可以安全地假设dll将被加载到不同的地址空间,因此它们拥有自己的共享数据副本?AppDomain(s)and unmanaged dll

回答

3

不,这是不可能的。 AppDomain是纯粹的管理概念。非托管DLL状态是进程范围内的,并且只能加载一个DLL副本。可能的破解是使用不同的名称创建DLL文件的副本。然而,它的规模非常小,而且销售很讨厌,不得不编写委托并使用LoadLibrary + GetProcAddress来绑定它们。

清洁的替代方法是使用加载DLL的单独帮助程序进程。通过像WCF这样的互操作机制与他们交谈。

+0

像往常一样,谢谢。 –