Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Classe AppDomainUnloadedException

Eccezione generata quando viene effettuato un tentativo di accedere a un dominio applicazione scaricato.

System.Object
  System.Exception
    System.SystemException
      System.AppDomainUnloadedException

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

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class AppDomainUnloadedException : SystemException

Il tipo AppDomainUnloadedException espone i seguenti membri.

  NomeDescrizione
Metodo pubblicoSupportato da XNA FrameworkAppDomainUnloadedException()Inizializza una nuova istanza di AppDomainUnloadedException classe.
Metodo pubblicoSupportato da XNA FrameworkAppDomainUnloadedException(String)Inizializza una nuova istanza di AppDomainUnloadedException classe con un messaggio di errore specificato.
Metodo protettoAppDomainUnloadedException(SerializationInfo, StreamingContext)Inizializza una nuova istanza di AppDomainUnloadedException classe con i dati serializzati.
Metodo pubblicoSupportato da XNA FrameworkAppDomainUnloadedException(String, Exception)Inizializza una nuova istanza di AppDomainUnloadedException classe con un messaggio di errore specificato e un riferimento all'eccezione interna che rappresenta la causa di questa eccezione.
In alto

  NomeDescrizione
Proprietà pubblicaData Ottiene una collezione di coppie chiave/valore che forniscono ulteriori informazioni definite dall'utente sull'eccezione. (Ereditato da Exception)
Proprietà pubblicaHelpLinkOttiene o imposta un collegamento al file della Guida associato all'eccezione. (Ereditato da Exception)
Proprietà pubblicaSupportato da XNA FrameworkHResult Ottiene o imposta HRESULT, un valore numerico codificato che viene assegnato ad una specifica eccezione. (Ereditato da Exception)
Proprietà pubblicaSupportato da XNA FrameworkInnerExceptionOttiene l'istanza di Exception che ha causato l'eccezione corrente. (Ereditato da Exception)
Proprietà pubblicaSupportato da XNA FrameworkMessageOttiene un messaggio che descrive l'eccezione corrente. (Ereditato da Exception)
Proprietà pubblicaSourceOttiene o imposta il nome dell'oggetto o dell'applicazione che ha generato l'errore. (Ereditato da Exception)
Proprietà pubblicaSupportato da XNA FrameworkStackTrace Ottiene una rappresentazione in forma di stringa dei frame nello stack di chiamate. (Ereditato da Exception)
Proprietà pubblicaTargetSite Ottiene il metodo che ha generato l'eccezione corrente. (Ereditato da Exception)
In alto

  NomeDescrizione
Metodo pubblicoSupportato da XNA FrameworkEquals(Object) Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object)
Metodo protettoSupportato da XNA FrameworkFinalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che l'oggetto stesso venga reclamato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblicoSupportato da XNA FrameworkGetBaseException Quando sottoposto a override in una classe derivata, restituisce l'Exception che è la causa principale di una o più eccezioni successive. (Ereditato da Exception)
Metodo pubblicoSupportato da XNA FrameworkGetHashCode Funge da funzione hash per un particolare tipo. (Ereditato da Object)
Metodo pubblicoGetObjectDataQuando l'override viene eseguito in una classe derivata, imposta il controllo SerializationInfo per la colonna. (Ereditato da Exception)
Metodo pubblicoSupportato da XNA FrameworkGetTypeOttiene il tipo di runtime dell'istanza corrente. (Ereditato da Exception)

In XNA Framework 3.0 questo membro viene ereditato da Object.GetType().
Metodo protettoSupportato da XNA FrameworkMemberwiseClone Crea una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblicoSupportato da XNA FrameworkToStringCrea e restituisce una rappresentazione in forma di stringa della corrente eccezione. (Ereditato da Exception)
In alto

  NomeDescrizione
Evento protettoSerializeObjectStateSi verifica quando un'eccezione viene serializzata per creare un oggetto stato di eccezione che contiene dati serializzati sull'eccezione. (Ereditato da Exception)
In alto

in .NET Framework versione 2.0, AppDomainUnloadedException ciò non viene gestito nel codice utente dispone dell'effetto:

  • Se un thread è stato avviato in codice gestito, viene terminato. L'eccezione non gestita non è consentita per interrompere l'applicazione.

  • Se un'attività è in esecuzione su un oggetto ThreadPool i thread, viene interrotta e il thread viene restituito al pool di thread. L'eccezione non gestita non è consentita per interrompere l'applicazione.

  • Se un thread avviato nel codice non gestito, come il thread principale dell'applicazione, viene terminato. L'eccezione non gestita è consentita per continuare e il sistema operativo chiude l'applicazione.

AppDomainUnloadedException utilizza il HRESULT COR_E_APPDOMAINUNLOADED, che presenta il valore 0x80131014.

Per un elenco di valori di proprietà iniziali per un'istanza di AppDomainUnloadedException, vedere AppDomainUnloadedException costruttori.

In questa sezione sono contenuti due esempi di codice. Il primo esempio vengono illustrati gli effetti di l AppDomainUnloadedException nei vari thread e lo scaricamento del dominio applicazione del secondo viene illustrato.

Esempio 1

Nell'esempio di codice riportato di seguito viene definito TestClass classe che può essere effettuato il marshalling oltre i limiti del dominio applicazione e Example classificare contenere un oggetto static (Shared in Visual Basic) ThreadProc metodo. ThreadProc il metodo crea un dominio applicazione, viene creato un oggetto TestClass oggetto nel dominio nelle chiamate a un metodo di TestClass ciò consente di scaricare il dominio in esecuzione, provocando AppDomainUnloadedException.

TestClass il metodo viene eseguito senza gestione delle eccezioni da un oggetto ThreadPool thread e da un thread comune, e che l'eccezione non gestita termina l'attività o thread ma non l'applicazione. Viene quindi eseguito con e senza gestione delle eccezioni dal thread principale dell'applicazione, ad indicare che termina l'applicazione se non gestita.


using System;
using System.Threading;
using System.Runtime.InteropServices;

public class Example
{
    public static void Main()
    {
        // 1. Queue ThreadProc as a task for a ThreadPool thread.
        ThreadPool.QueueUserWorkItem(ThreadProc, " from a ThreadPool thread");
        Thread.Sleep(1000);

        // 2. Execute ThreadProc on an ordinary thread.
        Thread t = new Thread(ThreadProc);
        t.Start(" from an ordinary thread");
        t.Join();

        // 3. Execute ThreadProc on the main thread, with 
        //    exception handling.
        try
        {
            ThreadProc(" from the main application thread (handled)");
        }
        catch (AppDomainUnloadedException adue)
        {
            Console.WriteLine("Main thread caught AppDomainUnloadedException: {0}", adue.Message);
        }

        // 4. Execute ThreadProc on the main thread without
        //    exception handling.
        ThreadProc(" from the main application thread (unhandled)");

        Console.WriteLine("Main: This message is never displayed.");
    }

    private static void ThreadProc(object state)
    {
        // Create an application domain, and create an instance
        // of TestClass in the application domain. The first
        // parameter of CreateInstanceAndUnwrap is the name of
        // this executable. If you compile the example code using
        // any name other than "Sample.exe", you must change the
        // parameter appropriately.
        AppDomain ad = AppDomain.CreateDomain("TestDomain");
        TestClass tc = (TestClass)ad.CreateInstanceAndUnwrap("Sample", "TestClass");

        // In the new application domain, execute a method that
        // unloads the AppDomain. The unhandled exception this
        // causes ends the current thread.
        tc.UnloadCurrentDomain(state);

        Console.WriteLine("ThreadProc: This message is never displayed.");
    }
}

// TestClass derives from MarshalByRefObject, so it can be marshaled
// across application domain boundaries. 
//
public class TestClass : MarshalByRefObject
{
    public void UnloadCurrentDomain(object state)
    {
        Console.WriteLine("\nUnloading the current AppDomain{0}.", state);

        // Unload the current application domain. This causes
        // an AppDomainUnloadedException to be thrown.
        //
        AppDomain.Unload(AppDomain.CurrentDomain);
    }
}

/* This code example produces output similar to the following:
Unloading the current AppDomain from a ThreadPool thread.

Unloading the current AppDomain from an ordinary thread.

Unloading the current AppDomain from the main application thread (handled).
Main thread caught AppDomainUnloadedException: The application domain in which the thread was running has been unloaded.

Unloading the current AppDomain from the main application thread (unhandled).

Unhandled Exception: System.AppDomainUnloadedException: The application domain in which the thread was running has been unloaded.
   at TestClass.UnloadCurrentDomain(Object state)
   at Example.ThreadProc(Object state)
   at Example.Main()
 */


Esempio 2

Nell'esempio di codice viene creata e scaricare un dominio applicazione e viene illustrato che AppDomainUnloadedException viene generato su un tentativo di accesso successivo al dominio scaricato.


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


.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

.NET per applicazioni Windows Phone

Supportato in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft