CannotUnloadAppDomainException クラス
アプリケーション ドメインをアンロードしようとして失敗した場合にスローされる例外。
この型のすべてのメンバの一覧については、CannotUnloadAppDomainException メンバ を参照してください。
System.Object
System.Exception
System.SystemException
System.CannotUnloadAppDomainException
<Serializable>
Public Class CannotUnloadAppDomainException Inherits SystemException
[C#]
[Serializable]
public class CannotUnloadAppDomainException : SystemException
[C++]
[Serializable]
public __gc class CannotUnloadAppDomainException : public SystemException
[JScript]
public
Serializable
class CannotUnloadAppDomainException extends SystemException
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
CannotUnloadAppDomainException は、次のアプリケーション ドメインをアンロードしようとした場合にスローされます。
- アプリケーションの有効期間中は読み込まれた状態でなければならない既定のアプリケーション ドメイン。
- すぐには停止できない実行中のスレッドがあるアプリケーション ドメイン。
- 既にアンロードされているアプリケーション ドメイン。
CannotUnloadAppDomainException は、値 0x80131015 を保持する HRESULT COR_E_CANNOTUNLOADAPPDOMAIN を使用します。
CannotUnloadAppDomainException のインスタンスの初期プロパティ値の一覧については、 CannotUnloadAppDomainException コンストラクタのトピックを参照してください。
使用例
Imports System
Imports System.Reflection
Imports System.Security.Policy
'for evidence object
Class ADMultiDomain
' The following attribute indicates to loader that multiple application
' domains are used in this application.
<LoaderOptimizationAttribute(LoaderOptimization.MultiDomainHost)> _
Public Shared Sub Main()
' Create application domain setup information for new application domain.
Dim domaininfo As New AppDomainSetup()
domaininfo.ApplicationBase = "file:///" + System.Environment.CurrentDirectory
domaininfo.ApplicationName = "MyMultiDomain Application"
'Create evidence for the new appdomain from evidence of current application domain.
Dim adevidence As Evidence = AppDomain.CurrentDomain.Evidence
' Create appdomain.
Dim newDomain As AppDomain = AppDomain.CreateDomain("MyMultiDomain", adevidence, domaininfo)
'Load an assembly into new the application domain.
newDomain.Load("System.data, version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")
'Unload the application domain, which also unloads the assembly.
AppDomain.Unload(newDomain)
Try
AppDomain.Unload(newDomain)
Catch e As CannotUnloadAppDomainException
Console.WriteLine("System can't unload appdomain. " & e.ToString())
End Try
End Sub 'Main
End Class 'ADMultiDomain
[C#]
using System;
using System.Reflection;
using System.Security.Policy; //for evidence object
class ADMultiDomain
{
// The following attribute indicates to loader that multiple application
// domains are used in this application.
[LoaderOptimizationAttribute( LoaderOptimization.MultiDomainHost)]
public static void Main()
{
// Create application domain setup information for new application domain.
AppDomainSetup domaininfo = new AppDomainSetup();
domaininfo.ApplicationBase = "file:///" + System.Environment.CurrentDirectory;
domaininfo.ApplicationName = "MyMultiDomain Application";
//Create evidence for the new appdomain from evidence of current application domain.
Evidence adevidence = AppDomain.CurrentDomain.Evidence;
// Create appdomain.
AppDomain newDomain = AppDomain.CreateDomain("MyMultiDomain", adevidence, domaininfo);
//Load an assembly into new the application domain.
newDomain.Load("System.data, version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
//Unload the application domain, which also unloads the assembly.
AppDomain.Unload(newDomain);
try
{
AppDomain.Unload(newDomain);
}
catch (CannotUnloadAppDomainException e)
{
Console.WriteLine("System can't unload appdomain. " + e);
}
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
using namespace System::Reflection;
using namespace System::Security::Policy; //for evidence Object*
// The following attribute indicates to loader that multiple application
// domains are used in this application.
[LoaderOptimizationAttribute(LoaderOptimization::MultiDomainHost)]
int main() {
// Create application domain setup information for new application domain.
AppDomainSetup* domaininfo = new AppDomainSetup();
domaininfo->ApplicationBase = S"file:////{0}", System::Environment::CurrentDirectory;
domaininfo->ApplicationName = S"MyMultiDomain Application";
//Create evidence for the new appdomain from evidence of current application domain.
Evidence* adevidence = AppDomain::CurrentDomain->Evidence;
// Create appdomain.
AppDomain* newDomain = AppDomain::CreateDomain(S"MyMultiDomain", adevidence, domaininfo);
//Load an assembly into new the application domain.
newDomain->Load(S"System.data, version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
//Unload the application domain, which also unloads the assembly.
AppDomain::Unload(newDomain);
try {
AppDomain::Unload(newDomain);
} catch (CannotUnloadAppDomainException* e) {
Console::WriteLine(S"System can't unload appdomain. {0}", e);
}
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: Mscorlib (Mscorlib.dll 内)
参照
CannotUnloadAppDomainException メンバ | System 名前空間 | Object | Exception | AppDomain | Thread | 例外の処理とスロー