Marshal.CleanupUnusedObjectsInCurrentContext 메서드

정의

현재의 컨텍스트에서 할당된 모든 RCW(런타임 호출 가능 래퍼)를 정리하도록 런타임에 알립니다.Notifies the runtime to clean up all Runtime Callable Wrappers (RCWs) allocated in the current context.

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를 정리 하려고 시도 하는 동안 펌프 메시지를 발생 시킵니다.The interop system pumps messages while it attempts to clean up RCWs. 이렇게 하면 펌프 충분히 자주 실행 하지 않는 하는 애플리케이션을 포함 하는 모든 애플리케이션에서 실행 되는 단일 스레드 아파트 (STA) Rcw 정리 합니다.This ensures that cleanup for single-threaded apartment (STA) RCWs happens in all applications, including applications that do not pump often enough. 그러나 적절 하 게 펌프 하지 않는 일부 애플리케이션은 발생 펌프에 매우 민감합니다.However, some applications that do pump appropriately are very sensitive to where pumping occurs. 때 예기치 않은 위치에서 이러한 애플리케이션에서 메시지를 펌핑 하는 interop 시스템, 애플리케이션 진단 하기 어려운 재진입 문제가 발생할 수 있습니다.When the interop system pumps messages in these applications, in places that are unexpected, , the application can encounter reentrancy issues that are difficult to diagnose. 따라서 애플리케이션은 특정 STA에 대 한 Rcw 정리 제어 하려면 자신의 펌프를 제어할 수 없게 되도록 해야 합니다.Therefore, applications need to be able to control their own pumping for a particular STA and to control the clean-up of RCWs.

그러나 개발자만 종종 해당 애플리케이션의 스레드 하위 집합을 제어 하 고 따라서 보장할 수 없습니다 모든 스레드가 적절 하 게 펌프 하는 합니다.However, developers often only control a subset of the threads in their application and thus cannot ensure that all threads are pumping appropriately.

이 문제를 해결 하려면 다음을 수행 합니다.To solve this problem:

  1. 메서드를 사용 Thread.DisableComObjectEagerCleanup 하 여 rcw의 자동 정리 및 발생 하는 메시지 펌프를 스레드 단위로 해제 합니다.Use the Thread.DisableComObjectEagerCleanup method to turn off automatic cleanup of RCWs, and the message pumping that occurs, on a per-thread basis. 이렇게 하면 개발자가 자동 정리 및 해당 메시지 펌프를 옵트아웃 (opt out) 할 수 있습니다.This allows developers to opt out of automatic clean-up, and the corresponding message pumping.

  2. 메서드를 사용 하 여 CleanupUnusedObjectsInCurrentContext 현재 컨텍스트에서 할당 된 모든 rcw를 정리 하도록 런타임에 알립니다.Use the CleanupUnusedObjectsInCurrentContext method to notify the runtime to clean up all RCWs that are allocated in the current context. 개발자는이 도우미 메서드를 사용 하 여 런타임에서 현재 컨텍스트에서 정리를 수행 하는 시기를 정확 하 게 제어할 수 있습니다.This companion method allows developers to precisely control when the runtime performs cleanup in the current context.

적용 대상