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 při pokusu o vyčištění RCW odčervuje zprávy. To zajišťuje, že čištění jednovláknového apartmánového RCW (STA) probíhá ve všech aplikacích, včetně aplikací, které nečerpá dostatečně často. Některé aplikace, které se správně používají, jsou však velmi citlivé na místo, kde dochází k čerpání. Když interopový systém vysílají 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řihlašováním, které je obtížné diagnostikovat. Proto aplikace musí být schopny řídit své vlastní čerpadlo 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 se všechna vlákna správně pumpovaly.

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

  1. Použijte metodu Thread.DisableComObjectEagerCleanup k vypnutí automatického č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 na vyčištění všech 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 provádí vyčištění v aktuálním kontextu.

Platí pro