Marshal.AreComObjectsAvailableForCleanup Method

Definition

Indicates whether runtime callable wrappers (RCWs) from any context are available for cleanup.

public:
 static bool AreComObjectsAvailableForCleanup();
[System.Security.SecurityCritical]
public static bool AreComObjectsAvailableForCleanup ();
public static bool AreComObjectsAvailableForCleanup ();
[<System.Security.SecurityCritical>]
static member AreComObjectsAvailableForCleanup : unit -> bool
static member AreComObjectsAvailableForCleanup : unit -> bool
Public Shared Function AreComObjectsAvailableForCleanup () As Boolean

Returns

true if there are any RCWs available for cleanup; otherwise, false.

Attributes

Remarks

If there are a lot of references between managed and native code with deep dependency graphs it can take a long time for all the objects to clean up. Each time a GC runs it will free up some number of RCWs, which will in turn release the underlying COM objects. Those COM objects will then release their managed references and make more objects available for cleanup the next time a GC runs, which starts the process over again.

The AreComObjectsAvailableForCleanup method provides a way for the application to determine how many cycles of GC.Collect and GC.WaitForPendingFinalizers need to happen in order to clean everything up.

Applies to