Marshal.CleanupUnusedObjectsInCurrentContext 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
현재의 컨텍스트에서 할당된 모든 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 정리 제어 하려면 자신의 펌프를 제어할 수 없게 되도록 해야 합니다.
그러나 개발자만 종종 해당 애플리케이션의 스레드 하위 집합을 제어 하 고 따라서 보장할 수 없습니다 모든 스레드가 적절 하 게 펌프 하는 합니다.
이 문제를 해결하려면 다음을 수행합니다.
메서드를 Thread.DisableComObjectEagerCleanup 사용하여 스레드별로 발생하는 RCW 및 메시지 펌핑의 자동 정리를 해제합니다. 이를 통해 개발자는 자동 정리 및 해당 메시지 펌핑을 옵트아웃할 수 있습니다.
메서드를 CleanupUnusedObjectsInCurrentContext 사용하여 런타임에 현재 컨텍스트에 할당된 모든 RCW를 정리하도록 알립니다. 이 도우미 메서드를 사용하면 개발자가 런타임이 현재 컨텍스트에서 정리를 수행하는 시기를 정확하게 제어할 수 있습니다.
적용 대상
.NET