この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

AppDomain.Unload メソッド (AppDomain)

 

公開日: 2016年10月

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

名前空間:   System
アセンブリ:  mscorlib (mscorlib.dll 内)

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

パラメーター

domain
Type: System.AppDomain

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

Exception Condition
ArgumentNullException

domainnull です。

CannotUnloadAppDomainException

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

Exception

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

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

System_CAPS_noteメモ

場合によっては、呼び出すUnload、すぐCannotUnloadAppDomainException、たとえばファイナライザーで呼び出された場合。

内のスレッドdomainが終了を使用して、Abortスローするメソッド、ThreadAbortExceptionスレッドでします。 スレッドがすぐに終了する必要がありますが、予期しない時間での実行を続行する、finally句。

.NET framework version 1.0 および 1.1 の場合は、スレッドを呼び出すUnloadで実行されているdomain、アンロード操作を実行する別のスレッドを開始します。 場合domainアンロードすることはできません、CannotUnloadAppDomainExceptionと呼ばれる元のスレッドではなく、そのスレッドでスローされるUnloadです。 ただしかどうか、スレッドを呼び出すUnload外部で実行中domainスレッドが例外を受け取ります。

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

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
1.1 以降で使用可能
トップに戻る
表示: