Afficher en anglais

Partage via


AppDomain.Unload(AppDomain) Méthode

Définition

Attention

Creating and unloading AppDomains is not supported and throws an exception.

Décharge le domaine d'application spécifié.

C#
public static void Unload(AppDomain domain);
C#
[System.Obsolete("Creating and unloading AppDomains is not supported and throws an exception.", DiagnosticId="SYSLIB0024", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static void Unload(AppDomain domain);

Paramètres

domain
AppDomain

Domaine d'application à décharger.

Attributs

Exceptions

domain a la valeur null.

.NET Core et .NET 5 (et versions ultérieures) uniquement : Dans tous les cas.

-ou-

Le domain n'a pas pu être déchargé.

Une erreur s'est produite pendant le processus de déchargement.

Exemples

L’exemple de code suivant montre comment décharger un domaine d’application.

C#
using System;
using System.Reflection;
using System.Security.Policy;
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.");
        }
    }
}

Remarques

Dans .NET Framework version 2.0 et ultérieures, il existe un thread dédié au déchargement des domaines d’application. Cela améliore la fiabilité, en particulier lorsque .NET Framework est hébergé. Lorsqu’un thread appelle Unload, le domaine cible est marqué pour le déchargement. Le thread dédié tente de décharger le domaine et tous les threads du domaine sont abandonnés. Si un thread n’abandonne pas, par exemple parce qu’il exécute du code non managé ou parce qu’il exécute un finally bloc, après un certain temps, un CannotUnloadAppDomainException est levée dans le thread qui a initialement appelé Unload. Si le thread qui n’a pas pu être abandonné se termine, le domaine cible n’est pas déchargé. Par conséquent, dans .NET Framework version 2.0 et ultérieure, le déchargement n’est pas garanti, domain car il n’est peut-être pas possible d’arrêter l’exécution des threads.

Remarque

Dans certains cas, l’appel Unload entraîne un effet immédiat CannotUnloadAppDomainException, par exemple s’il est appelé dans un finaliseur.

Les threads dans domain sont arrêtés à l’aide de la Abort méthode, qui lève un ThreadAbortException dans le thread. Bien que le thread se termine rapidement, il peut continuer à s’exécuter pendant un laps de temps imprévisible dans une finally clause.

S’applique à

Produit Versions (Obsolète)
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5 (6, 7, 8, 9)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Voir aussi