英語で読む

次の方法で共有


AppDomain.Unload(AppDomain) メソッド

定義

注意事項

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

指定したアプリケーション ドメインをアンロードします。

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);

パラメーター

domain
AppDomain

アンロードするアプリケーション ドメイン。

属性

例外

domainnullです。

.NET Core および .NET 5 以降のみ:すべての場合。

または

domain をアンロードできませんでした。

アンロード処理中にエラーが発生しました。

次のコード例は、アプリケーション ドメインをアンロードする方法を示しています。

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

注釈

.NET Framework バージョン 2.0 以降では、アプリケーション ドメインのアンロード専用のスレッドがあります。 これにより、特に.NET Frameworkがホストされている場合に、信頼性が向上します。 スレッドが を呼び出 Unloadすと、ターゲット ドメインはアンロード用にマークされます。 専用スレッドがドメインのアンロードを試み、ドメイン内のすべてのスレッドが中止されます。 アンマネージド コードを実行している場合やブロックを実行 finally しているなどの理由でスレッドが中止されない場合は、一定期間 CannotUnloadAppDomainException 後に、 が呼び出 Unloadされたスレッドで がスローされます。 中止できなかったスレッドが最終的に終了した場合、ターゲット ドメインはアンロードされません。 したがって、.NET Frameworkバージョン 2.0 以降では、domain実行中のスレッドを終了できない可能性があるため、アンロードは保証されません。

注意

場合によっては、 を呼び出すと Unload 、ファイナライザーで呼び出された場合など、即時 CannotUnloadAppDomainExceptionの が発生します。

domain スレッドは、 メソッドを Abort 使用して終了され、スレッドで が ThreadAbortException スローされます。 スレッドは直ちに終了する必要がありますが、句で予測できない時間だけ実行を finally 続けることができます。

適用対象

製品 バージョン (廃止)
.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

こちらもご覧ください