Unload Method

AppDomain.Unload Method (AppDomain)


Unloads the specified application domain.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

[<SecurityPermissionAttribute(SecurityAction.Demand, ControlAppDomain = true)>]
static member Unload : 
        domain:AppDomain -> unit


Type: System.AppDomain

An application domain to unload.

Exception Condition

domain is null.


domain could not be unloaded.


An error occurred during the unload process.

In the .NET Framework version 2.0 there is a thread dedicated to unloading application domains. This improves reliability, especially when the .NET Framework is hosted. When a thread calls Unload, the target domain is marked for unloading. The dedicated thread attempts to unload the domain, and all threads in the domain are aborted. If a thread does not abort, for example because it is executing unmanaged code, or because it is executing a finally block, then after a period of time a CannotUnloadAppDomainException is thrown in the thread that originally called Unload. If the thread that could not be aborted eventually ends, the target domain is not unloaded. Thus, in the .NET Framework version 2.0 domain is not guaranteed to unload, because it might not be possible to terminate executing threads.


In some cases, calling Unload causes an immediate CannotUnloadAppDomainException, for example if it is called in a finalizer.

The threads in domain are terminated using the Abort method, which throws a ThreadAbortException in the thread. Although the thread should terminate promptly, it can continue executing for an unpredictable amount of time in a finally clause.

In the .NET Framework version 1.0 and 1.1 if the thread that calls Unload is running in domain, another thread is started to perform the unload operation. If domain cannot be unloaded, a CannotUnloadAppDomainException is thrown in that thread, not in the original thread that called Unload. However, if the thread that calls Unload is running outside domain, that thread receives the exception.

The following code example shows how to unload an application domain.

No code example is currently available or this language may not be supported.


to add an event handler for this event. Associated enumeration: SecurityPermissionFlag.ControlAppDomain. Security action: Demand.

.NET Framework
Available since 1.1
Return to top
© 2016 Microsoft