C# AppDomain在C语言中的使用#
AppDomains在C#中最重要的用途是什么?最重要的一个用途是你的代码必须有一个,即你用C#编写的所有东西都在C# AppDomain在C语言中的使用#,c#,remoting,appdomain,C#,Remoting,Appdomain,AppDomains在C#中最重要的用途是什么?最重要的一个用途是你的代码必须有一个,即你用C#编写的所有东西都在AppDomain中执行。这是相当重要的-p 如果您是指其他应用程序域: 当使用插件和其他不受信任的代码时,它既允许隔离,也允许卸载它们(不能卸载程序集,只能卸载整个应用程序域) 我目前正在使用它来加载动态生成的DLL,以便卸载它们 它们还允许您设置不同的配置文件、信任级别等,但会带来相关的复杂性和远程处理成本 MSDN有一个关于应用程序域的部分,我不能告诉你什么是最重要的用途,因为
AppDomain
中执行。这是相当重要的-p
如果您是指其他应用程序域:
当使用插件和其他不受信任的代码时,它既允许隔离,也允许卸载它们(不能卸载程序集,只能卸载整个应用程序域)
我目前正在使用它来加载动态生成的DLL,以便卸载它们
它们还允许您设置不同的配置文件、信任级别等,但会带来相关的复杂性和远程处理成本
MSDN有一个关于应用程序域的部分,我不能告诉你什么是最重要的用途,因为这取决于具体情况 AppDomains对于应用程序的沙箱部分非常有用。您可以在AppDomain中加载扩展并再次卸载它们—这是您无法执行的。您可以为AppDomains分配特定的权限。不同AppDomain中的默认对象不能相互访问 AppDomains可以看作是轻量级进程,因为它们提供了许多相同的功能。但是,与进程不同,新的AppDomains没有默认的线程。您必须自己管理应用程序域和线程
此外,AppDomains都共享同一个托管堆。这通常不是问题,但可能会产生令人惊讶的效果,因为某些实例(如字符串)在AppDomains之间共享。对于常规使用,这不是问题,但如果使用字符串进行锁定,不同AppDomain中的线程可能会相互影响 一般来说,使用AppDomains并不是日常的编码实践,这可以看作是一个高级概念。。但是,从这个简单的事情开始,更好地理解“AppDomain”一词背后的概念是很重要的 就架构而言,尽可能简单地说,AppDomain是一个隔离容器,即使在内存寻址方面也是如此,在它内部,应用程序所需的所有程序集都会被加载和执行,即使这个概念更复杂,无法详细解释(我希望这不是关于你的问题,更深入) 从这里开始,AppDomain类首先用于获取对与应用程序相关的执行应用程序域的访问,这可以通过Singleton属性实现
AppDomain.CurrentDomain
完成。通过这种方式,可以:
因此,您可以创建两个AppDomain,一个用于第三方,另一个用于您自己的C#类。对于第三方appdomain,您将应用无法访问c:drive的安全约束,对于c#DLL,您将拥有一个不受限制的应用程序域 请阅读我的博客,了解DLL运行时加载和使用AppDomain进行交叉通信的标准应用程序
关于字符串的注释很好。“AppDomain都共享同一个托管堆。”这是否意味着它们也共享静态类或静态方法?请阅读我的博客,了解DLL运行时加载和使用AppDomain进行交叉通信的标准应用程序。