Sdílet prostřednictvím


Marshal.CleanupUnusedObjectsInCurrentContext Metoda

Definice

Upozorní modul runtime, aby vyčistil všechny moduly RCW (Runtime Callable Wrappers) 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 při pokusu o vyčištění RCW. Tím se zajistí, že čištění jednovláknových apartmánových stanic (STA) RCW probíhá ve všech aplikacích, včetně aplikací, které nečerpají dostatečně často. Některé aplikace, které pumpují správně, jsou však velmi citlivé na to, kde k čerpání dochází. 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 opakovaným připojením, které je obtížné diagnostikovat. Proto musí být aplikace schopné řídit vlastní čerpání pro konkrétní STA a řídit čištění RCW.

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

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

  1. Pomocí metody vypněte Thread.DisableComObjectEagerCleanup automatické čištění RCW a pumpování zpráv, ke kterému dochází, na základě jednotlivých vláken. To umožňuje vývojářům vyjádřit výslovný nesouhlas s automatickým čištěním a odpovídajícím pumpováním zpráv.

  2. CleanupUnusedObjectsInCurrentContext Pomocí metody upozorněte modul runtime, aby vyčistil všechny služby RCW, které jsou přiděleny v aktuálním kontextu. Tato doprovodná metoda umožňuje vývojářům přesně řídit, kdy modul runtime provede vyčištění v aktuálním kontextu.

Platí pro