Scaricamento di un dominio applicazione

Una volta terminato l'utilizzo di un dominio applicazione, scaricare tale dominio utilizzando il metodo System.AppDomain.Unload. Il metodo Unload consente di chiudere normalmente il dominio applicazione specificato. Durante il processo di scaricamento, l'accesso al dominio applicazione non è consentito ad alcun nuovo thread e tutti i dati specifici del dominio applicazione vengono liberati.

Gli assembly caricati nel dominio applicazione vengono rimossi e non risultano più disponibili. Se un assembly nel dominio applicazione è indipendente dal dominio, i dati relativi all'assembly rimarranno in memoria fino alla chiusura dell'intero processo. L'unico meccanismo che consente lo scaricamento di un assembly indipendente dal dominio consiste nella chiusura dell'intero processo. In alcune situazioni non risulta possibile scaricare un dominio applicazione e viene generata un'eccezione CannotUnloadAppDomainException.

L'esempio seguente consente di creare un dominio applicazione denominato MyDomain, di stampare alcune informazioni nella console e di scaricare il dominio applicazione. Si noti che nel codice si tenta in seguito di stampare il nome descrittivo del dominio applicazione scaricato nella console. Questa operazione genera un'eccezione, gestita da istruzioni try/catch alla fine del programma.

Imports System
Imports System.Reflection
Class AppDomain2
   Public Shared Sub Main()
      Console.WriteLine("Creating new AppDomain.")
      Dim domain As AppDomain = AppDomain.CreateDomain("MyDomain", Nothing)
      
      Console.WriteLine(("Host domain: " + AppDomain.CurrentDomain.FriendlyName))
      Console.WriteLine(("child domain: " + domain.FriendlyName))
      AppDomain.Unload(domain)
      Try
         Console.WriteLine()
         Console.WriteLine(("Host domain: " + AppDomain.CurrentDomain.FriendlyName))
         ' The following statement creates an exception because the domain no longer exists.
         Console.WriteLine(("child domain: " + domain.FriendlyName))
      Catch e As AppDomainUnloadedException
         Console.WriteLine("The appdomain MyDomain does not exist.")
      End Try
   End Sub 'Main
End Class 'AppDomain2
[C#]
using System;
using System.Reflection;
class AppDomain2
{
public static void Main()
{
 Console.WriteLine("Creating new AppDomain.");
 AppDomain domain = AppDomain.CreateDomain("MyDomain", null);

            Console.WriteLine("Host domain: " + AppDomain.CurrentDomain.FriendlyName);
            Console.WriteLine("child domain: " + domain.FriendlyName);
   AppDomain.Unload(domain);
   try
      {
      Console.WriteLine();
      Console.WriteLine("Host domain: " + AppDomain.CurrentDomain.FriendlyName);
      // 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.");
      }
   }
}

Vedere anche

Programmazione con i domini applicazione | Creazione di un dominio applicazione | Utilizzo dei domini applicazione