进程是存在独立的内存和资源的,但是AppDomain仅仅是逻辑上的一种抽象。一个process可以存在多个AppDomain。各个AppDomain之间的数据时相互独立的。一个线程可以穿梭多个AppDomain。

一、属性

ActivationContext

获取当前应用程序域的激活上下文。

ApplicationIdentity

获得应用程序域中的应用程序标识。

ApplicationTrust

获取授予应用程序的权限以及应用程序是否拥有允许其运行的信任级别的信息。

BaseDirectory

获取基目录,它由程序集冲突解决程序用来探测程序集。

CurrentDomain

获取当前 Thread 的当前应用程序域。

DomainManager

获得初始化应用程序域时主机提供的域管理器。

DynamicDirectory

获取目录,它由程序集冲突解决程序用来探测动态创建的程序集。

Evidence

获取与该应用程序域关联的 Evidence。

FriendlyName

获取此应用程序域的友好名称。

Id

获得一个整数,该整数唯一标识进程中的应用程序域。

IsFullyTrusted

获取一个值,该值指示加载到当前应用程序域的程序集是否以完全信任执行的。

MonitoringSurvivedMemorySize

获取或设置一个值,该值指示是否对当前进程启用应用程序域的 CPU 和内存监视。 一旦对进程启用了监视,则无法将其禁用。

MonitoringSurvivedMemorySize

获取上次完全阻止回收后保留下来的、已知由当前应用程序域引用的字节数。

MonitoringSurvivedProcessMemorySize

获取进程中所有应用程序域的上次完全阻止回收后保留下来的总字节数。

MonitoringTotalAllocatedMemorySize

获取自从创建应用程序域后由应用程序域进行的所有内存分配的总大小(以字节为单位,不扣除已回收的内存)。

MonitoringTotalProcessorTime

获取自从进程启动后所有线程在当前应用程序域中执行时所使用的总处理器时间。

IsHomogenous

获取一个值,该值指示当前应用程序域是否拥有为加载到该应用程序域的所有程序集授予的权限集。

MonitoringIsEnabled

获取或设置一个值,该值指示是否对当前进程启用应用程序域的 CPU 和内存监视。 一旦对进程启用了监视,则无法将其禁用。

PermissionSet

获取沙盒应用程序域的权限集。

RelativeSearchPath

获取基目录下的路径,在此程序集冲突解决程序应探测专用程序集

SetupInformation

获取此实例的应用程序域配置信息。

ShadowCopyFiles

获取应用程序域是否配置为影像副本文件的指示。

public class Program
{
static void Main(string[] args)
{
AppDomain appdomain = AppDomain.CurrentDomain; //获取当前 Thread 的当前应用程序域。
Console.WriteLine(appdomain.Id); //输出 1 获得一个整数,唯一标识进程中的应用程序域。
Console.WriteLine(appdomain.ActivationContext); //输出 空白 获取当前应用程序域的激活上下文。
Console.WriteLine(appdomain.ApplicationIdentity); //输出 空白 获得应用程序域中的应用程序标识。
ApplicationTrust AT = appdomain.ApplicationTrust; //获取说明授予应用程序的权限以及应用程序是否拥有允许其运行的信任级别的信息。
Console.WriteLine(appdomain.ApplicationTrust); //输出 System.Security.Policy.ApplicationTrust
Console.WriteLine(appdomain.BaseDirectory); //输出 F:\xxx\xxx\ConsoleApplication1\bin\Debug\ 获取基目录,它由程序集冲突解决程序用来探测程序集。
Console.WriteLine(appdomain.DomainManager); //输出 Microsoft.VisualStudio.HostingProcess.VSHostAppDomainManager
Console.WriteLine(appdomain.DynamicDirectory); //输出 空白 获取目录,它由程序集冲突解决程序用来探测动态创建的程序集。
Evidence ed = appdomain.Evidence; //另外一个东西了 获取与该应用程序域关联的 Evidence。
Console.WriteLine(appdomain.Evidence.ToString()); //输出 System.Security.Policy.Evidence
Console.WriteLine(appdomain.FriendlyName); //输出 ConsoleApplication1.vshost.exe 获取此应用程序域的友好名称。
Console.WriteLine(appdomain.IsFullyTrusted); //输出 True 获取一个值,该值指示加载到当前应用程序域的程序集是否是以完全信任方式执行的。
Console.WriteLine(appdomain.IsHomogenous); //输出 True 获取一个值,该值指示当前应用程序域是否拥有一个为加载到该应用程序域的所有程序集授予的权限集。
Console.WriteLine(AppDomain.MonitoringIsEnabled); //输出 False 获取或设置一个值,该值指示是否对当前进程启用应用程序域的 CPU 和内存监视。 一旦对进程启用了监视,则无法将其禁用。
AppDomain.MonitoringIsEnabled = true;
//要上面那个属性启用之后,这个属性才能用
Console.WriteLine(appdomain.MonitoringSurvivedMemorySize); //输出 0 获取上次完全阻止回收后保留下来的、已知由当前应用程序域引用的字节数。
Console.WriteLine(appdomain.MonitoringTotalAllocatedMemorySize); //输出 0 获取自从创建应用程序域后由应用程序域进行的所有内存分配的总大小(以字节为单位,不扣除已回收的内存)。
Console.WriteLine(appdomain.MonitoringTotalProcessorTime); //输出 00:00:00 获取自从进程启动后所有线程在当前应用程序域中执行时所使用的总处理器时间。
System.Security.PermissionSet ps = appdomain.PermissionSet; //获取沙盒应用程序域的权限集。
Console.WriteLine(appdomain.PermissionSet.ToString()); //输出 <PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true"/>
Console.WriteLine(appdomain.RelativeSearchPath); //输出 空白
Console.WriteLine(appdomain.SetupInformation); //输出 AppDomainSetup 获取此实例的应用程序域配置信息。
Console.WriteLine(appdomain.ShadowCopyFiles); //输出 False
File.WriteAllText(@"D:\123.txt", appdomain.PermissionSet.ToString());
//SetupInformation 获取此实例的应用程序域配置信息
//ShadowCopyFiles 获取应用程序域是否配置为影像副本文件的指示。
Console.ReadKey();
}

二、方法

名称

说明

ApplyPolicy

返回应用策略后的程序集显示名称。

CreateComInstanceFrom(String, String)

创建指定 COM 类型的新实例。 形参指定文件的名称,该文件包含含有类型和类型名称的程序集。

CreateDomain(String)

使用指定的名称新建应用程序域。

CreateInstance(String, String)

创建在指定程序集中定义的指定类型的新实例。

CreateInstanceAndUnwrap(String, String)

创建指定类型的新实例。 形参指定定义类型的程序集以及类型的名称。

CreateInstanceFrom(String, String)

创建在指定程序集文件中定义的指定类型的新实例。

CreateObjRef

创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject。)

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess)

以指定名称和访问模式定义动态程序集。

DoCallBack

在另一个应用程序域中执行代码,该应用程序域由指定的委托标识。

ExecuteAssembly(String)

执行指定文件中包含的程序集。

ExecuteAssemblyByName(String)

在给定其显示名称的情况下执行程序集。

GetAssemblies

获取已加载到此应用程序域的执行上下文中的程序集。

GetData

为指定名称获取存储在当前应用程序域中的值。

GetLifetimeService

检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject。)

InitializeLifetimeService

通过防止创建租约来给予 AppDomain 无限生存期。 (重写 MarshalByRefObject.InitializeLifetimeService()。)

IsCompatibilitySwitchSet

获取可以为 null 的布尔值,该值指示是否设置了任何兼容性开关,如果已设置,则指定是否设置了指定的兼容性开关。

IsDefaultAppDomain

返回一个值,指示应用程序域是否是进程的默认应用程序域。

IsFinalizingForUnload

指示此应用程序域是否正在卸载以及公共语言运行时是否正在终止该域包含的对象。

Load(AssemblyName)

在给定 AssemblyName 的情况下加载 Assembly。

ReflectionOnlyGetAssemblies

返回已加载到应用程序域的只反射上下文中的程序集。

SetData(String, Object)

为指定的应用程序域属性分配指定值。

SetData(String, Object, IPermission)

将指定值分配给指定应用程序域属性,检索该属性时要求调用方具有指定权限。

SetPrincipalPolicy

指定在此应用程序域中执行时如果线程尝试绑定到用户,用户和标识对象应如何附加到该线程。

SetThreadPrincipal

设置在以下情况下要附加到线程的默认主体对象,即当线程在此应用程序域中执行时,如果线程尝试绑定到主体这种情况。

Unload

卸载指定的应用程序域。

其实我经常使用AppDomin类的地方就是获取当前程序根目录:

static void Main(string[] args)
{
string exeStr=System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory,"xx.exe");
System.Console.ReadKey();
}

C#基础知识之System.AppDomain类的更多相关文章

  1. C#基础知识系列三(类和结构体、String和StringBuilder、equals和==)

    前言 这一节主要来了解一下类和结构体之间的异同点.以及针对String和StringBuilder的用法.equals和==,其实可以看出很多地方都用到了上一节的值类型和引用类型.堆栈和装箱拆箱操作吧 ...

  2. System.AppDomain类详解(一)

    AppDomain是CLR(Common Language Runtime:公共语言运行库),它可以加载Assembly.创建对象以及执行程序. AppDomain是CLR实现代码隔离的基本机制. 每 ...

  3. C# System.AppDomain类

    进程是存在独立的内存和资源的,但是AppDomain仅仅是逻辑上的一种抽象.一个process可以存在多个AppDomain.各个AppDomain之间的数据时相互独立的.一个线程可以穿梭多个AppD ...

  4. System.AppDomain类详解(二)

    进程是存在独立的内存和资源的,但是AppDomain仅仅是逻辑上的一种抽象.一个process可以存在多个AppDomain.各个AppDomain之间的数据时相互独立的.一个线程可以穿梭多个AppD ...

  5. C++基础知识(5)---类和对象

    终于把C++中的基础在前面的几篇博客中总结完了,可能还有一些语法还没有总结到,没关系,以后用到了再查资料就好.类是C++中的一个非常重要的概念,这是区别你使用的C++到底是面向过程还是面向对象的一个重 ...

  6. JAVA基础知识之Collections工具类

    排序操作 Collections提供以下方法对List进行排序操作 void reverse(List list):反转 void shuffle(List list),随机排序 void sort( ...

  7. java基础知识回顾之javaIO类---FileWriter和FileReader

    FileWriter类的构造方法定义如下: 1.public FileWriter(File file)throws IOException 字符流的操作比字节流操作好在一点,就是可以直接输出字符串了 ...

  8. java基础知识回顾之javaIO类--RandomAccessFile类

    java.io 类 RandomAccessFile java.lang.Object java.io.RandomAccessFile1.该类不是IO流中的子类.2.该类既能读又能写.3.该对象内部 ...

  9. java基础知识回顾之javaIO类--java序列化和反序列化

    /** *  * 一:理解序列化反序列化及其应用 * 序列化:把堆内存的对象转化成字节流的过程. * 反序列化:把字节流序列恢复重构成对象的过程. * 对象的序列化的用途:1.把对象的字节序列持久化, ...

随机推荐

  1. RedHat系统文本界面安装图形界面方法

    版本: Linux version 2.6.32-431.el6.x86_64 (mockbuild@x86-023.build.eng.bos.redhat.com) (gcc version 4. ...

  2. webpack插件之htmlWebpackPlugin

    webpack插件之htmlWebpackPlugin webpack插件 自动化 htmlWebpackPlugin  由于webpack已经帮我们处理好js之间的依赖关系,现在我们可以忽略js的加 ...

  3. java 8 jdk1.8 新特性

    1Lambda表达式 2函数式接口 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. java 8为函数式接口引入了一个新注解@Fu ...

  4. 硬件-硬盘-SSD(固态硬盘):百科

    ylbtech-硬件-硬盘-SSD(固态硬盘):百科 固态驱动器(Solid State Disk或Solid State Drive,简称SSD),俗称固态硬盘,固态硬盘是用固态电子存储芯片阵列而制 ...

  5. 九:flask-response响应

    1.如果返回的是个合法的响应对象,则直接返回 同时,也可以在response里面做一些操作,比如增加cookie 2.如果返回的是一个字符串,那么flask会重新创建一个werkzeug,wrappe ...

  6. kubernets监控

    Weave Scope 容器地图   创建 Kubernetes 集群并部署容器化应用只是第一步.一旦集群运行起来,我们需要确保一起正常,所有必要组件就位并各司其职,有足够的资源满足应用的需求.Kub ...

  7. 设置了responseType:Blob之后,如果返回json错误信息,如果获取?

    最近做了一个文件下载功能,于是设置了responseType: Blob的方式, 什么是Blob呢,MDN官方解释:Blob 对象表示一个不可变.原始数据的类文件对象.Blob 表示的不一定是Java ...

  8. 第十三周学习总结 Java的异常

    java的核心思想 面向对象的编程思想 类和类的关系 类中成员的描述 对象创建 Java工具类 包装类 数学相关 日期相关 字符串相关 集合相关的类 考试机 学生 老师 --------------- ...

  9. Tomcat进程、SFTP服务器

    查看Tomcat是否以关闭 ps -ef|grep tomcat port sftp -oPort=60001 root@192.168.0.254

  10. [转帖]华为海思Hi1620芯片发布在即 7nm制程ARM架构最高可达3.0GHz

    华为海思Hi1620芯片发布在即 7nm制程ARM架构最高可达3.0GHz https://www.cnbeta.com/articles/tech/850561.htm 中电科旗下的普华软件 支持国 ...