应用程序域是.NET程序所在的独立区域,应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。每个.NET进程通常拥有一个默认应用程序域。
应用程序域通常由运行时宿主创建,运行时宿主负责在运行应用程序之前引导公共语言运行时。
宿主(例如,Microsoft Internet Explorer、ASP.NET 和 Windows shell)将公共语言运行时加载到一个进程中,在该进程中创建 应用程序域,然后在运行 .NET Framework 应用程序时加载和执行该应用程序域中的用户代码。
using System.Reflection;
AppDomainSetup domaininfo = new AppDomainSetup();
domaininfo.ApplicationBase = "f:\\work\\development\\latest";//配置应用程序信息
AppDomain domain = AppDomain.CreateDomain("MyDomain",null,domaininfo);//创建应用程序域
domain.ExecuteAssembly("demo.exe");//demo.exe 在应用程序域 MyDomain 内执行
Console.WriteLine(("Host domain: " + AppDomain.CurrentDomain.FriendlyName);//显示当前应用程序域友好名称
Console.WriteLine(("Host domain is default: " + AppDomain.CurrentDomain.IsDefaultDomain);
domain.SetData("Message","some message");
Console.WriteLine(AppDomain.CurrentDomain.GetData("Message"));//应用程序域通信
AppDomain.Unload(domain);//卸载应用程序域 MyDomain
AppDomain.CurrentDomain.FirstChanceException +=
(object source, FirstChanceExceptionEventArgs e) =>
{
Console.WriteLine("FirstChanceException event raised in {0}: {1}",
AppDomain.CurrentDomain.FriendlyName, e.Exception.Message);
};//接受首次异常通知