İngilizce dilinde oku

Aracılığıyla paylaş


AppDomainUnloadedException Sınıf

Tanım

Kaldırılmış bir uygulama etki alanına erişme girişiminde bulunulduğunda oluşan özel durum.

C#
public class AppDomainUnloadedException : SystemException
C#
[System.Serializable]
public class AppDomainUnloadedException : SystemException
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class AppDomainUnloadedException : SystemException
Devralma
AppDomainUnloadedException
Öznitelikler

Örnekler

Bu bölüm iki kod örneği içerir. İlk örnekte, bir AppDomainUnloadedException öğesinin çeşitli iş parçacıkları üzerindeki etkileri, ikinci örnekte ise temel uygulama etki alanının kaldırılması gösterilmektedir.

Örnek 1

Aşağıdaki kod örneği, uygulama etki alanı sınırları arasında sıralanabilir bir TestClass sınıfı ve (Shared Visual Basic içinde) ThreadProc yöntemini içeren bir Example static sınıfı tanımlar. ThreadProc yöntemi bir uygulama etki alanı oluşturur, etki alanında bir TestClass nesne oluşturur ve yürüten etki alanını kaldıran bir yöntemini TestClass çağırarak bir AppDomainUnloadedExceptionöğesine neden olur.

TestClass yöntemi, bir iş parçacığından ve sıradan bir ThreadPool iş parçacığından özel durum işlemesi olmadan yürütülür ve işlenmeyen özel durumun görevi veya iş parçacığını sonlandırdığını ancak uygulamayı sonlandırmadığını gösterir. Ardından ana uygulama iş parçacığından özel durum işlemesi ile ve olmadan yürütülür ve işlenmediği takdirde uygulamayı sonlandırdığını gösterir.

C#
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()
 */

Örnek 2

Aşağıdaki kod örneği bir uygulama etki alanı oluşturup kaldırır ve kaldırılan etki alanına erişmeye yönelik sonraki bir girişimde bir AppDomainUnloadedException atıldığını gösterir.

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

Açıklamalar

.NET Framework sürüm 2.0'da, kullanıcı kodunda işlenmeyen bir AppDomainUnloadedException aşağıdaki etkiye sahiptir:

  • Yönetilen kodda bir iş parçacığı başlatıldıysa sonlandırılır. İşlenmeyen özel durumun uygulamayı sonlandırmasına izin verilmiyor.

  • Bir görev bir ThreadPool iş parçacığında yürütülüyorsa, sonlandırılır ve iş parçacığı iş parçacığı havuzuna döndürülür. İşlenmeyen özel durumun uygulamayı sonlandırmasına izin verilmiyor.

  • Ana uygulama iş parçacığı gibi yönetilmeyen kodda başlatılan bir iş parçacığı sonlandırılır. İşlenmeyen özel durumun devam etmesine izin verilir ve işletim sistemi uygulamayı sonlandırır.

AppDomainUnloadedException değeri 0x80131014 olan HRESULT COR_E_APPDOMAINUNLOADED kullanır.

örneğinin ilk özellik değerlerinin AppDomainUnloadedExceptionlistesi için oluşturuculara AppDomainUnloadedException bakın.

Oluşturucular

AppDomainUnloadedException()

AppDomainUnloadedException sınıfının yeni bir örneğini başlatır.

AppDomainUnloadedException(SerializationInfo, StreamingContext)

AppDomainUnloadedException sınıfının yeni bir örneğini serileştirilmiş verilerle başlatır.

AppDomainUnloadedException(String)

Belirtilen hata iletisiyle sınıfının yeni bir örneğini AppDomainUnloadedException başlatır.

AppDomainUnloadedException(String, Exception)

Belirtilen bir hata iletisi ve bu özel durumun nedeni olan iç özel duruma başvuru ile sınıfının yeni bir örneğini AppDomainUnloadedException başlatır.

Özellikler

Data

Özel durum hakkında kullanıcı tanımlı ek bilgiler sağlayan bir anahtar/değer çifti koleksiyonu alır.

(Devralındığı yer: Exception)
HelpLink

Bu özel durumla ilişkili yardım dosyasının bağlantısını alır veya ayarlar.

(Devralındığı yer: Exception)
HResult

Belirli bir özel duruma atanan kodlanmış sayısal bir değer olan HRESULT değerini alır veya ayarlar.

(Devralındığı yer: Exception)
InnerException

Exception Geçerli özel duruma neden olan örneği alır.

(Devralındığı yer: Exception)
Message

Geçerli özel durumu açıklayan bir ileti alır.

(Devralındığı yer: Exception)
Source

Hataya neden olan uygulamanın veya nesnenin adını alır veya ayarlar.

(Devralındığı yer: Exception)
StackTrace

Çağrı yığınındaki anlık çerçevelerin dize gösterimini alır.

(Devralındığı yer: Exception)
TargetSite

Geçerli özel durumu oluşturan yöntemini alır.

(Devralındığı yer: Exception)

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetBaseException()

Türetilmiş bir sınıfta geçersiz kılındığında, sonraki bir veya daha fazla özel durumun kök nedeni olan değerini döndürür Exception .

(Devralındığı yer: Exception)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetObjectData(SerializationInfo, StreamingContext)

Türetilmiş bir sınıfta geçersiz kılındığında, özel durum hakkındaki bilgilerle öğesini ayarlar SerializationInfo .

(Devralındığı yer: Exception)
GetType()

Geçerli örneğin çalışma zamanı türünü alır.

(Devralındığı yer: Exception)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli özel durumun dize gösterimini oluşturur ve döndürür.

(Devralındığı yer: Exception)

Ekinlikler

SerializeObjectState
Kullanımdan kalktı.

Bir özel durum, özel durum hakkında serileştirilmiş veriler içeren bir özel durum nesnesi oluşturmak üzere seri hale getirildiğinde gerçekleşir.

(Devralındığı yer: Exception)

Şunlara uygulanır

Ürün Sürümler
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.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
.NET Standard 2.0, 2.1

Ayrıca bkz.