다음을 통해 공유


Marshal.ReleaseComObject 메서드

제공된 런타임 호출 가능 래퍼의 참조 횟수를 감소시킵니다.

네임스페이스: System.Runtime.InteropServices
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
Public Shared Function ReleaseComObject ( _
    o As Object _
) As Integer
‘사용 방법
Dim o As Object
Dim returnValue As Integer

returnValue = Marshal.ReleaseComObject(o)
public static int ReleaseComObject (
    Object o
)
public:
static int ReleaseComObject (
    Object^ o
)
public static int ReleaseComObject (
    Object o
)
public static function ReleaseComObject (
    o : Object
) : int

매개 변수

  • o
    해제할 COM 개체입니다.

반환 값

o와 연결된 런타임 호출 가능 래퍼 참조 횟수의 새 값입니다. 런타임 호출 가능 래퍼는 해당 참조를 호출하는 관리되는 클라이언트의 수에 관계없이 래핑된 COM 개체에 대한 참조를 하나만 유지하므로 일반적으로 이 값은 0이 됩니다.

예외

예외 형식 조건

ArgumentException

o가 유효한 COM 개체가 아닌 경우

- 또는 -

o가 Null 참조(Visual Basic의 경우 Nothing)인 경우

설명

COM 인터페이스 포인터는 공용 언어 런타임으로 들어갈 때마다 런타임 호출 가능 래퍼에 래핑됩니다. 이러한 래퍼의 기능에 익숙하지 않으면 RCW를 참조하십시오.

이 메서드는 관리 코드에서 사용되는 COM 개체의 수명을 명시적으로 제어하는 데 사용됩니다. 내부 COM 개체에 적시에 해제해야 하는 리소스 참조가 있거나 특정 순서에 따라 개체를 해제해야 하는 경우 이 메서드를 사용하여 내부 COM 개체를 해제합니다.

이 런타임 호출 가능 래퍼에는 COM 인터페이스 포인터가 매핑될 때마다 증가되는 참조 횟수가 있습니다. ReleaseComObject 메서드는 런타임 호출 가능 래퍼의 참조 횟수를 감소시킵니다. 참조 횟수가 0이 되면 런타임에서 관리되지 않는 COM 개체의 모든 참조를 해제하며, 사용자가 해당 개체를 다시 사용하려고 하면 System.NullReferenceException을 throw합니다. 동일한 COM 인터페이스가 비관리 코드에서 관리 코드로 두 번 이상 전달되면 래퍼의 참조 횟수가 매번 증가하며, ReleaseComObject를 호출하면 나머지 참조의 수가 반환됩니다.

참고

런타임 호출 가능 래퍼 및 원본 COM 개체가 해제되도록 하려면 반환되는 참조 횟수가 0에 도달될 때까지 이 메서드를 계속 호출하는 루프를 생성합니다.

참고

이 메서드는 신뢰할 수 없는 코드에서 호출되지 않도록 SecurityAction.LinkDemand를 사용합니다. SecurityPermissionAttribute.UnmanagedCode 권한을 가지려면 직접 실행 호출자만 필요합니다. 부분적으로 신뢰할 수 있는 코드에서 특정 코드를 호출하는 경우 유효성 검사 없이 사용자 입력을 Marshal 클래스 메서드로 전달하지 마십시오. LinkDemand 멤버 사용에 대한 중요한 제한 사항은 Demand와 LinkDemand 비교를 참조하십시오.

.NET Framework 보안

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0에서 지원

참고 항목

참조

Marshal 클래스
Marshal 멤버
System.Runtime.InteropServices 네임스페이스
FinalReleaseComObject
NullReferenceException