Marshal.CleanupUnusedObjectsInCurrentContext Metodo

Definizione

Notifica al runtime di pulire tutti i runtime Callable Wrapper (RCW) allocati nel contesto corrente.

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

Commenti

I messaggi del sistema di interoperabilità vengono immessi durante il tentativo di pulire le workstation RCW. In questo modo si garantisce che la pulizia per le RCW (STA) a thread singolo venga eseguita in tutte le applicazioni, incluse le applicazioni che non pompano abbastanza spesso. Tuttavia, alcune applicazioni che eseguono la pompa in modo appropriato sono molto sensibili alla posizione in cui si verifica la pompa. Quando il sistema di interoperabilità inserisce messaggi in queste applicazioni, in posizioni impreviste, , l'applicazione può riscontrare problemi di reentrancy difficili da diagnosticare. Pertanto, le applicazioni devono essere in grado di controllare la propria pompa per una particolare STA e di controllare la pulizia delle workstation RCW.

Tuttavia, gli sviluppatori spesso controllano solo un subset dei thread nell'applicazione e pertanto non possono garantire che tutti i thread vengano pompati in modo appropriato.

Per risolvere il problema:

  1. Usare il metodo per disattivare la Thread.DisableComObjectEagerCleanup pulizia automatica delle workstation RCW e il messaggio che si verifica, per ogni thread. In questo modo gli sviluppatori possono rifiutare esplicitamente la pulizia automatica e il messaggio corrispondente.

  2. Usare il CleanupUnusedObjectsInCurrentContext metodo per notificare al runtime di pulire tutte le workstation RCW allocate nel contesto corrente. Questo metodo complementare consente agli sviluppatori di controllare con precisione quando il runtime esegue la pulizia nel contesto corrente.

Si applica a