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");

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

  • 相关阅读:
    Docker容器操作
    Docker的镜像操作
    CentOs安装Docker
    超长字符串
    编程之美-2.11 扩展 寻找距离最远的两个点
    编程之美-2.8 找到符合条件的整数
    编程之美-2.4 1的数目
    编程之美-1.16 24点游戏
    logistic回归 c++ 实现
    朴素贝页斯分类法 c++实现
  • 原文地址:https://www.cnblogs.com/chuizilong/p/10179633.html
Copyright © 2011-2022 走看看