zoukankan      html  css  js  c++  java
  • 应用程序域

    使用.NET建立的可执行程序 *.exe,并没有直接承载到进程当中,而是承载到应用程序域(AppDomain)当中。应用程序域是.NET引入的一个新概念,它比进程所占用的资源要少,可以被看作是一个轻量级的进程。
    在一个进程中可以包含多个应用程序域,一个应用程序域可以装载一个可执行程序(*.exe)或者多个程序集(*.dll)。这样可以使应用程序域之间实现深度隔离,即使进程中的某个应用程序域出现错误,也不会影响其他应用程序域的正常运作。

    当一个程序集同时被多个应用程序域调用时,会出现两种情况:
    第一种情况:CLR分别为不同的应用程序域加载此程序集。
    第二种情况:CLR把此程序集加载到所有的应用程序域之外,并实现程序集共享,此情况比较特殊,被称作为Domain Neutral。

    2.1 在AppDomain中加载程序集

    通过CreateDomain方法可以建立一个新的应用程序域。 下面的例子将使用CreateDomain建立一个应用程序域,并使用Load方法加载程序集Model.dll。最后使用GetAssemblies方法,列举此应用程序域中的所有程序集

    var appDomain = AppDomain.CreateDomain("NewAppDomain");
    appDomain.Load(“Common");
    foreach (var assembly in appDomain.GetAssemblies())
    Console.WriteLine(string.Format("{0}\n----------------------------",
    assembly.FullName));
    Console.ReadKey();

    注意:当加载程序集后,就无法把它从AppDomain中卸载,只能把整个AppDomain卸载

    当需要在AppDomain加载可执行程序时,可以使用ExecuteAssembly方法。
    AppDomain.ExecuteAssembly("NewAppDomain");

    作者太难了给作者点辛苦费吧

  • 相关阅读:
    你知道Synchronized底层实现原理嘛
    一篇搞定Java集合类原理
    lsp都要会的内存模型
    Sql Server 查询优化
    使用Windows的mstsc远程桌面连接到Ubuntu图形界面(AWS上安装的Ubuntu系统)
    AWS EC2实例Ubuntu系统设置root用户密码并使用root/ubuntu用户登录
    安装mysql.zip文件教程(包含常见问题修复)
    DevExpress GridControl小结
    C#开发必会
    C# 错误集锦
  • 原文地址:https://www.cnblogs.com/chuizilong/p/10179633.html
Copyright © 2011-2022 走看看