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.把对象的字节序列持久化, ...
随机推荐
- 深入浅出mysql笔记---0、序
深入浅出mysql笔记---0.序 一.总结 一句话总结: 心得:买书之前建议先找找电子书,纸质书太难带了 1.开源作用? 开源对mysql的发展至关重要 2.mysql在2002年就全面支持了事务, ...
- NLP大赛冠军总结:300万知乎多标签文本分类任务(附深度学习源码)
NLP大赛冠军总结:300万知乎多标签文本分类任务(附深度学习源码) 七月,酷暑难耐,认识的几位同学参加知乎看山杯,均取得不错的排名.当时天池AI医疗大赛初赛结束,官方正在为复赛进行平台调 ...
- 一、基础篇--1.1Java基础-自定义注解的场景及实现
自定义注解使用场景: 类属性自动赋值,例如对上下文.传入参数等赋值 验证对象属性完整性,例如,对参数的校验 代替配置文件功能,像spring基于注解的配置 可以生成文档,例如java 最早提供的注解. ...
- maven 安装jar包命令
以 spring-context-support-3.1.0.RELEASE.jar 为例,在 @3图中已经给出这个 jar 包的 groupId,artifactId,version信息,手动安装的 ...
- 淘淘相关工具类【json,httpClient,id,FTP,exception,cookie(包括共享cookie的设置等)】
json package com.taotao.common.utils; import java.util.List; import com.fasterxml.jackson.core.JsonP ...
- Python基本语法_异常处理详解
目录 目录 异常 异常类型 异常处理 触发异常raise 传递异常 assert语句触发异常 捕获异常tryexceptelse 捕捉多个异常 tryfinally语句 自定义异常 withas触发异 ...
- 2018.03.27 pandas duplicated 和 replace 使用
#.duplicated / .replace import numpy as np import pandas as pd s = pd.Series([1,1,1,1,1,2,3,3,3,4,4, ...
- WPF 带有提示文本的透明文本框
<TextBox Text="{Binding SearchInfo, UpdateSourceTrigger=PropertyChanged}" Grid.Row=&quo ...
- 【MM系列】SAP MM模块-货物移动对标准价的影响
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-货物移动对标准价的 ...
- ugui拖拽
整理了下以前写的 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityE ...