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.把对象的字节序列持久化, ...
随机推荐
- 尚硅谷Docker---6-10、docker的安装
尚硅谷Docker---6-10.docker的安装 一.总结 一句话总结: docker的安装使用非常简单,安装的话yum安装epel和docker,使用的话就是docker run命令 1.doc ...
- UI-WPF_UI:WPF UI - DMSkin官方网站
ylbtech-UI-WPF_UI:WPF UI - DMSkin官方网站 1.返回顶部 1. QQ: 944095635 DMSkin.com 首页 论坛 定制 博客 联系 DMSkin 3. ...
- 实体类的[Serializable]标签造成WebAPI Post接收不到值
WebAPI: [HttpPost] public HttpResponseMessage test([FromBody]List<Class1> list) { return Commo ...
- centos7:Zookeeper集群安装
将安装包上传到安装目录 解压文件 tar -zxvf zookeeper-3.4.12.tar.gz 移动解压后的文件到软件目录 mv zookeeper-3.4.12 /home/softwareD ...
- LeetCode算法题-Flipping an Image(Java实现)
这是悦乐书的第324次更新,第347篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第194题(顺位题号是832).给定二进制矩阵A,我们想要水平翻转图像,然后反转它,并返 ...
- IP地址相关运算(如VLSM,超网汇总)
1.根据IP地址+子网掩码算出IP地址所在的网段(网络号) 例子: IP地址192.168.10.33,子网掩码为:255.255.255.240 (/28) ,写出所在的网络号 1.得出子网的块大小 ...
- linux/work
0.切换用户 //默认root用户是无固定密码的,并且是被锁定的,如果想给root设置一个密码 sudo passwd root //输入密码 & 确认密码 //切换root用户 su roo ...
- 实验3&总结5
老师:lijin2019,助教:晨晨果 提交作业 实验三 String类的应用 实验目的 掌握类String类的使用: 学会使用JDK帮助文档: 实验内容 1.已知字符串:"this is ...
- babel版本问题
在运行webpack命令的时候总是报错,原来是因为babel版本的问题 我安装的webpack3 babel版本是6 babel-loader是8 后来把babel改成7就可以了
- HTTP/2 最新漏洞,直指 Kubernetes!
Java技术栈 www.javastack.cn 优秀的Java技术公众号 在这个数据.应用横行的时代,漏洞的出现早已屡见不鲜.在尚未造成大面积危害之前,我们该如何做好防御措施?或许从过往经常发生漏洞 ...