C#基础知识之System.AppDomain类
进程是存在独立的内存和资源的,但是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类的更多相关文章
- C#基础知识系列三(类和结构体、String和StringBuilder、equals和==)
前言 这一节主要来了解一下类和结构体之间的异同点.以及针对String和StringBuilder的用法.equals和==,其实可以看出很多地方都用到了上一节的值类型和引用类型.堆栈和装箱拆箱操作吧 ...
- System.AppDomain类详解(一)
AppDomain是CLR(Common Language Runtime:公共语言运行库),它可以加载Assembly.创建对象以及执行程序. AppDomain是CLR实现代码隔离的基本机制. 每 ...
- C# System.AppDomain类
进程是存在独立的内存和资源的,但是AppDomain仅仅是逻辑上的一种抽象.一个process可以存在多个AppDomain.各个AppDomain之间的数据时相互独立的.一个线程可以穿梭多个AppD ...
- System.AppDomain类详解(二)
进程是存在独立的内存和资源的,但是AppDomain仅仅是逻辑上的一种抽象.一个process可以存在多个AppDomain.各个AppDomain之间的数据时相互独立的.一个线程可以穿梭多个AppD ...
- C++基础知识(5)---类和对象
终于把C++中的基础在前面的几篇博客中总结完了,可能还有一些语法还没有总结到,没关系,以后用到了再查资料就好.类是C++中的一个非常重要的概念,这是区别你使用的C++到底是面向过程还是面向对象的一个重 ...
- JAVA基础知识之Collections工具类
排序操作 Collections提供以下方法对List进行排序操作 void reverse(List list):反转 void shuffle(List list),随机排序 void sort( ...
- java基础知识回顾之javaIO类---FileWriter和FileReader
FileWriter类的构造方法定义如下: 1.public FileWriter(File file)throws IOException 字符流的操作比字节流操作好在一点,就是可以直接输出字符串了 ...
- java基础知识回顾之javaIO类--RandomAccessFile类
java.io 类 RandomAccessFile java.lang.Object java.io.RandomAccessFile1.该类不是IO流中的子类.2.该类既能读又能写.3.该对象内部 ...
- java基础知识回顾之javaIO类--java序列化和反序列化
/** * * 一:理解序列化反序列化及其应用 * 序列化:把堆内存的对象转化成字节流的过程. * 反序列化:把字节流序列恢复重构成对象的过程. * 对象的序列化的用途:1.把对象的字节序列持久化, ...
随机推荐
- JavaScript json loop item in array
Iterating through/Parsing JSON Object via JavaScript 解答1 Your JSON object is incorrect because it ha ...
- ORACLE sqlprompt设置
SYS@orcl>defineDEFINE _DATE = "17-JUN-19" (CHAR)DEFINE _CONNECT_IDENTIFIER = ...
- 二、robotframework接口测试-常用关键字介绍
1.常用关键字介绍: a. 打印:log 用法:log 打印内容 ---------------- ...
- git跟yum一样 linux下的命令使用和思想是类似的
git跟yum一样 linux下的命令使用和思想是类似的
- [VBA]批量新建指定名称的工作表
sub 批量新建指定名称的工作表() Dim i As Integer For i = 2 To 10 '根据实际情况修改i大小 Worksheets.Add after:=Worksheets ...
- jest 提示 Unexpected identifier 的解决方案
概述 今天在玩 jest 的时候,发现用 import 就会报 Unexpected identifier 的错误.查了很久的资料,最后终于解决了. 参考资料:Jest tests can't pro ...
- ASP.NET对路径"C:/......."的访问被拒绝 解决方法小结 [转载]
问题: 异常详细信息: System.UnauthorizedAccessException: 对路径“C:/Supermarket/output.pdf”的访问被拒绝. 解决方法: 一.在IIS中的 ...
- 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_4 Mybatis中使用Dao实现类的执行过程分析-查询方法
delete方法没有并SqlSession的delete方法,而是调用的Upadte方法. 在测试类这里加断点. 实际的方法体内也加断点 运行测试方法,选择debug的方式 走到断点这里.会看到fac ...
- 四:flask-URL两种传参方式(路径传参和get传参)
新建一个视图 第一种:路径传参:url/参数:<参数名>,然后再视图函数中接收参数 也可以指定数据类型 string:默认使用此数据类型,接收没有任何斜杠"\/"的文本 ...
- oracle-参数文件的备份与还原
oracle-参数文件的备份与还原 参数文件是实例启动到nomount状态的必要条件,规定了实例的行为特征,位置跟操作系统相关,一般unix类的系统在$ORACLE_HOME/dbs目录下 (wind ...