Marshal.CleanupUnusedObjectsInCurrentContext Metoda

Definice

Upozorní modul runtime, aby vyčistil všechny obálky s možností volání modulu runtime (RCWs) přidělené v aktuálním kontextu.

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 ()
Atributy

Poznámky

Interop systém pumpuje zprávy, zatímco se pokouší vyčistit RCWs. Tím se zajistí, že čištění pro jednovláknové apartmány (STA) RCWs proběhne ve všech aplikacích, včetně aplikací, které se dostatečně často nenačerpá. Některé aplikace, které pumpují správně, jsou však velmi citlivé na to, kde se pumpování vyskytuje. Když interop systém pumpuje zprávy v těchto aplikacích, na místech, která jsou neočekávaná, může aplikace narazit na problémy s opětovnou architekturou, které jsou obtížné diagnostikovat. Proto musí být aplikace schopny ovládat vlastní pumpování pro konkrétní STA a řídit čištění RCWs.

Vývojáři ale často řídí pouze podmnožinu vláken ve své aplikaci, a proto nemohou zajistit, aby se všechna vlákna správně pumpovaly.

Tento problém vyřešíte takto:

  1. Thread.DisableComObjectEagerCleanup Pomocí této metody vypněte automatické čištění RCWs a pumpování zpráv, ke kterým dochází, na bázi jednotlivých vláken. To umožňuje vývojářům odhlásit automatické čištění a odpovídající pumpování zpráv.

  2. CleanupUnusedObjectsInCurrentContext Pomocí metody upozorněte modul runtime k vyčištění všech rcWs, které jsou přiděleny v aktuálním kontextu. Tato doprovodná metoda umožňuje vývojářům přesně řídit, kdy modul runtime provádí vyčištění v aktuálním kontextu.

Platí pro