다음을 통해 공유


방법: 응용 프로그램 도메인 언로드

업데이트: 2007년 11월

응용 프로그램 도메인을 사용한 후에는System.AppDomain.Unload 메서드를 사용하여 이 도메인을 언로드합니다. Unload 메서드는 지정된 응용 프로그램 도메인을 자동으로 종료합니다. 프로세스를 언로드하는 동안 새 스레드는 응용 프로그램 도메인에 액세스할 수 없습니다. 또한 응용 프로그램 도메인 전용의 모든 데이터 구조가 비워집니다.

응용 프로그램 도메인에 로드된 어셈블리는 모두 제거되고 더 이상 사용할 수 없습니다. 응용 프로그램 도메인에 있는 어셈블리가 도메인 중립 어셈블리인 경우, 해당 어셈블리의 데이터는 전체 프로세스가 종료될 때까지 메모리에 남아 있습니다. 따라서 도메인 중립 어셈블리를 언로드하려면 전체 프로세스를 종료하는 것이 유일한 방법입니다. 경우에 따라 응용 프로그램 도메인 언로드 요청이 제대로 실행되지 않고 CannotUnloadAppDomainException이 발생할 수도 있습니다.

다음 예제는 MyDomain이라는 새 응용 프로그램 도메인을 만들고, 일부 정보를 콘솔에 출력한 다음, 응용 프로그램 도메인을 언로드합니다. 이 코드에서는 언로드된 응용 프로그램 도메인의 이름을 콘솔에 출력하려고 합니다. 이 동작에서 예외가 발생하는데, 이 예외는 프로그램 끝에서 try/catch 문에 의해 처리됩니다.

예제

Imports System
Imports System.Reflection
Class AppDomain2
   Public Shared Sub Main()
      Console.WriteLine("Creating new AppDomain.")
      Dim domain As AppDomain = AppDomain.CreateDomain("MyDomain", Nothing)
      
      Console.WriteLine(("Host domain: " + AppDomain.CurrentDomain.FriendlyName))
      Console.WriteLine(("child domain: " + domain.FriendlyName))
      AppDomain.Unload(domain)
      Try
         Console.WriteLine()
         Console.WriteLine(("Host domain: " + AppDomain.CurrentDomain.FriendlyName))
         ' The following statement creates an exception because the domain no longer exists.
         Console.WriteLine(("child domain: " + domain.FriendlyName))
      Catch e As AppDomainUnloadedException
         Console.WriteLine("The appdomain MyDomain does not exist.")
      End Try
   End Sub 'Main
End Class 'AppDomain2
using System;
using System.Reflection;
class AppDomain2
{
public static void Main()
{
 Console.WriteLine("Creating new AppDomain.");
 AppDomain domain = AppDomain.CreateDomain("MyDomain", null);

            Console.WriteLine("Host domain: " + AppDomain.CurrentDomain.FriendlyName);
            Console.WriteLine("child domain: " + domain.FriendlyName);
   AppDomain.Unload(domain);
   try
      {
      Console.WriteLine();
      Console.WriteLine("Host domain: " + AppDomain.CurrentDomain.FriendlyName);
      // 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.");
      }
   }
}

참고 항목

작업

방법: 응용 프로그램 도메인 만들기

개념

응용 프로그램 도메인으로 프로그래밍

기타 리소스

응용 프로그램 도메인 사용