Appdomain

appdomain:应用程序域,是CLR中实现代码隔离的基本机制,只在.net中存在

1.一个进程中可以有多个Appdomain,一个Appdomain只能属于一个进程

 

2.AppDomain是个静态概念,只是限定了对象的边界;线程是个动态概念,它可以运行在不同的AppDomain

 

一个AppDomain内可以创建多个线程,但是不能限定这些线程只能在本AppDomain内执行代码
 3.Assembly是.Net程序的基本部署单元,它可以为CLR提供用于识别类型的元数据等等。Assembly不能单独执行,它必须被加载到 AppDomain中,然后由AppDomain创建程序集中的对象

 

一个Assembly可以被多个AppDomain加载,一个AppDomain可以加载多个Assembly

 

 

4.任何对象只能属于一个AppDomain。AppDomain用来隔离对象,不同AppDomain之间的对象必须通过Proxy(reference type)或者 Clone(value type)通信

 

.net  中的一个程序要运行,os首先会创建一个进程,然后在进程中加载CLR,加载CLR时会默认创建一个AppDomain,它是CLR的运行单元,程序的main方法就是在这里执行的,appdomain是不能被卸载的,只有进程消灭时,Appdomain才会随之消失

我们的Assambly是不能单独执行的,必须被加载到某个 Appdomain,要想卸载assambly,就只能卸载Appdomain

具体代码实现请参照:

 

 

 

 

 

posted @ 2011-07-03 01:07  艾伦  阅读(418)  评论(0编辑  收藏  举报