[ZZ] 应用程序域 AppDomain WinForm程序


4. 应用程序域
4.1 什么是应用程序域?
应用程序域 (AppDomain) 可以被看作一个轻型的进程。在一个 Win32 进程中可以存在多个 AppDomain。AppDomain 的主要目的是将应用程序和其它应用程序隔离开来。 

通过使用独立的地址空间,Win32 进程提供隔离性。这种方法很有效,但开销很大并且伸缩性不好。.NET 运行库通过控制对内存的是用来施加 AppDomain 隔离—AppDomain 中的所有内存是由 .NET 运行库来管理的,所以运行库可以确保 AppDomain 之间不能访问彼此的内存。

  

4.2 如何创建 AppDomain?
AppDomains 通常有宿主创建。宿主包括 Windows Shell、ASP+ 和 IE。当你从命令行运行一个 .NET 应用程序时,宿主是 Shell。Shell 为每个应用程序创建一个新的 AppDomain。 

AppDomains 也可以由 .NET 应用程序来显式创建。这里是一个创建 AppDomain 的一个 C# 例子,它创建对象的一个实例,并随后执行对象的一个方法: 

   
     
using System;
using System.Runtime.Remoting;

public class CAppDomainInfo : MarshalByRefObject
{
public string GetAppDomainInfo()
{
return " AppDomain = " + AppDomain.CurrentDomain.FriendlyName;
}

}

public class App
{
public static int Main()
{
AppDomain ad
= AppDomain.CreateDomain( " Andy's new domain " , null , null );
ObjectHandle oh
= ad.CreateInstance( " appdomaintest.exe " , " CAppDomainInfo " );
CAppDomainInfo adInfo
= (CAppDomainInfo)(oh.Unwrap());
string info = adInfo.GetAppDomainInfo();

Console.WriteLine(
" AppDomain info: " + info );
return 0 ;
}
}

你可能感兴趣的:(WinForm)