應用程序域通常由運行庫宿主創建和操作。有時,您可能希望應用程序以編程方式與應用程序域交互,例如想在不停止應用程序運行的情況下卸載某個組件時。
應用程序域使應用程序以及應用程序的數據彼此分離,有助於提高安全性。單個進程可以運行多個應用程序域,並具有在單獨進程中所存在的隔離級別。在單個進程中運行多個應用程序提高了服務器伸縮性。
下面的代碼示例創建壹個新的應用程序域,然後加載並執行以前生成的程序集
HelloWorld.exe,該程序集存儲在驅動器
C
上。
C#
復制代碼
static
void
Main()
{
//
Create
an
Application
Domain:
System.AppDomain
newDomain
=
System.AppDomain.CreateDomain("NewApplicationDomain");
//
Load
and
execute
an
assembly:
newDomain.ExecuteAssembly(@"c:\HelloWorld.exe");
//
Unload
the
application
domain:
System.AppDomain.Unload(newDomain);
}
應用程序域概述
應用程序域具有以下特點:
必須先將程序集加載到應用程序域中,然後才能執行該程序集。有關更多信息,請參見程序集和全局程序集緩存(C#
編程指南)。
壹個應用程序域中的錯誤不會影響在另壹個應用程序域中運行的其他代碼。
能夠在不停止整個進程的情況下停止單個應用程序並卸載代碼。不能卸載單獨的程序集或類型,只能卸載整個應用程序域。