Marshal.CleanupUnusedObjectsInCurrentContext 메서드

정의

현재의 컨텍스트에서 할당된 모든 RCW(런타임 호출 가능 래퍼)를 정리하도록 런타임에 알립니다.

public:
 static void CleanupUnusedObjectsInCurrentContext();
public static void CleanupUnusedObjectsInCurrentContext ();
[System.Security.SecurityCritical]
public static void CleanupUnusedObjectsInCurrentContext ();
static member CleanupUnusedObjectsInCurrentContext : unit -> unit
[<System.Security.SecurityCritical>]
static member CleanupUnusedObjectsInCurrentContext : unit -> unit
Public Shared Sub CleanupUnusedObjectsInCurrentContext ()
특성

설명

interop 시스템은 RCW를 클린 동안 메시지를 펌프합니다. 이렇게 하면 펌프 충분히 자주 실행 하지 않는 하는 애플리케이션을 포함 하는 모든 애플리케이션에서 실행 되는 단일 스레드 아파트 (STA) Rcw 정리 합니다. 그러나 적절 하 게 펌프 하지 않는 일부 애플리케이션은 발생 펌프에 매우 민감합니다. 때 예기치 않은 위치에서 이러한 애플리케이션에서 메시지를 펌핑 하는 interop 시스템, 애플리케이션 진단 하기 어려운 재진입 문제가 발생할 수 있습니다. 따라서 애플리케이션은 특정 STA에 대 한 Rcw 정리 제어 하려면 자신의 펌프를 제어할 수 없게 되도록 해야 합니다.

그러나 개발자만 종종 해당 애플리케이션의 스레드 하위 집합을 제어 하 고 따라서 보장할 수 없습니다 모든 스레드가 적절 하 게 펌프 하는 합니다.

이 문제를 해결하려면 다음을 수행합니다.

  1. 메서드를 Thread.DisableComObjectEagerCleanup 사용하여 스레드별로 RCW의 자동 정리 및 발생하는 메시지 펌핑을 해제합니다. 이를 통해 개발자는 자동 클린 및 해당 메시지 펌핑을 옵트아웃할 수 있습니다.

  2. 메서드를 CleanupUnusedObjectsInCurrentContext 사용하여 현재 컨텍스트에 할당된 모든 RCW를 클린 런타임에 알립니다. 이 도우미 메서드를 사용하면 개발자가 런타임이 현재 컨텍스트에서 정리를 수행하는 시기를 정확하게 제어할 수 있습니다.

적용 대상