System.AppDomain.Unload 方法

方法描述

卸载指定的应用程序域。

语法定义(C# System.AppDomain.Unload 方法 的用法)

[SecurityPermissionAttribute(SecurityAction.Demand, ControlAppDomain = true)]
public static void Unload(
	AppDomain domain
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
domain System-AppDomain 要卸载的应用程序域。
返回值 void

提示和注释

在 .NET Framework 版本 2.0 中,有一个专用于卸载应用程序域的线程。 这样可提高可靠性,尤其在 .NET Framework 已承载的情况下。 当线程调用 Unload 时,将标记用于卸载的目标域。 专用线程尝试卸载域,域中所有线程都中止。 如果某个线程不中止,例如,因为其正在执行非托管代码或正在执行 finally 块,则一段时间后,原始调用 Unload 的线程中将引发 CannotUnloadAppDomainException。 如果无法中止的线程最终结束,则目标域没有完成卸载。 因此,.NET Framework 版本 2.0 中 domain 不能保证卸载,因为其可能无法终止正在执行的线程。

注意

在某些情况下,调用 Unload 将即刻引发 CannotUnloadAppDomainException,例如在终结器中调用时。

domain 中的线程使用 Abort 方法终止,此方法在线程中引发 ThreadAbortException。 尽管线程应立刻终止,但是它可能在 finally 子句中继续执行一段时间,而且时间长短无法预计。

版本兼容性

在 .NET Framework 版本 1.0 和 1.1 中,如果调用 Unload 的线程在 domain 中运行,则将启动另一个线程执行卸载操作。 如果无法卸载 domain,则在该线程中引发 CannotUnloadAppDomainException,而不是在调用 Unload 的原始线程中引发。 但是,如果调用 Unload 的线程正在 domain 外运行,则该线程将会收到该异常。

System.AppDomain.Unload 方法例子

下面的代码示例演示如何卸载应用程序域。

using System;
using System.Reflection;
using System.Security.Policy;  //for evidence object
class ADUnload
{
	public static void Main()
	{

		//Create evidence for the new appdomain.
		Evidence adevidence = AppDomain.CurrentDomain.Evidence;

 		// Create the new application domain.
 		AppDomain domain = AppDomain.CreateDomain("MyDomain", adevidence);

            	Console.WriteLine("Host domain: " + AppDomain.CurrentDomain.FriendlyName);
            	Console.WriteLine("child domain: " + domain.FriendlyName);
		// Unload the application domain.
		AppDomain.Unload(domain);

		try
		{
		Console.WriteLine();
		// Note that the following statement creates an exception because the domain no longer exists.
            	Console.WriteLine("child domain: " + domain.FriendlyName);
		}

		catch (AppDomainUnloadedException e)
		{
		Console.WriteLine("The appdomain MyDomain does not exist.");
		}
		
	}
	
}

异常

异常 异常描述
ArgumentNullException domain 为 null。
CannotUnloadAppDomainException domain 未能卸载。
Exception 在卸载进程期间出错。

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。