Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo AppDomain.Unload (AppDomain)

 

Data di pubblicazione: ottobre 2016

Scarica il dominio applicazione corrente.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

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

Parametri

domain
Type: System.AppDomain

Dominio applicazione da scaricare.

Exception Condition
ArgumentNullException

domain è null.

CannotUnloadAppDomainException

domain non può essere scaricato.

Exception

Si è verificato un errore durante il processo di scaricamento.

In .NET Framework versione 2.0 è disponibile un thread dedicato di scaricamento di domini applicazione. Ciò migliora l'affidabilità, soprattutto quando è ospitato in .NET Framework. Quando un thread chiama Unload, il dominio di destinazione è contrassegnato per lo scaricamento. Il thread dedicato tenta di scaricare il dominio e tutti i thread nel dominio sono state interrotte. Se un thread viene interrotto, ad esempio perché è in esecuzione il codice non gestito o perché è in esecuzione un finally blocco, dopo un periodo di tempo un CannotUnloadAppDomainException viene generata nel thread che ha chiamato originariamente Unload. Se il thread che non venga interrotto infine termina, il dominio di destinazione non viene scaricato. Pertanto, in .NET Framework versione 2.0 domain non è garantito che lo scaricamento, poiché potrebbe non essere possibile terminare i thread in esecuzione.

System_CAPS_noteNota

In alcuni casi, la chiamata Unload genera un'eccezione immediata CannotUnloadAppDomainException, ad esempio se viene chiamato in un finalizzatore.

I thread in domain vengono terminati mediante il Abort metodo, che genera un ThreadAbortException nel thread. Anche se il thread viene terminato immediatamente, può continuare l'esecuzione per un periodo di tempo in imprevedibile un finally clausola.

In .NET Framework versioni 1.0 e 1.1, se il thread che chiama Unload è in esecuzione in domain, viene avviato un altro thread per eseguire l'operazione di scaricamento. Se domain non può essere scaricato, un CannotUnloadAppDomainException viene generata in quel thread, non nel thread originale che ha chiamato Unload. Tuttavia, se il thread che chiama il metodo Unload è in esecuzione all'esterno domain, che thread riceve l'eccezione.

Esempio di codice seguente viene illustrato come scaricare un dominio applicazione.

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.");
		}

	}

}

SecurityPermission

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

.NET Framework
Disponibile da 1.1
Torna all'inizio
Mostra: