Marshal.CleanupUnusedObjectsInCurrentContext Método

Definición

Notifica al tiempo de ejecución que debe limpiar todos los contenedores RCW asignados en el contexto actual.

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

Comentarios

El sistema de interoperabilidad bombea mensajes mientras intenta limpiar RCW. Esto garantiza que la limpieza de rcW de apartamento uniproceso (STA) se produzca en todas las aplicaciones, incluidas las aplicaciones que no bombean con frecuencia suficiente. Sin embargo, algunas aplicaciones que realizan la bomba adecuadamente son muy sensibles a dónde se produce la bombeo. Cuando el sistema de interoperabilidad envía mensajes en estas aplicaciones, en lugares inesperados, , la aplicación puede encontrar problemas de reentrada que son difíciles de diagnosticar. Por lo tanto, las aplicaciones deben ser capaces de controlar su propia bombeo para un STA determinado y controlar la limpieza de RCW.

Sin embargo, los desarrolladores a menudo solo controlan un subconjunto de los subprocesos de su aplicación y, por tanto, no pueden asegurarse de que todos los subprocesos se estén bombeando correctamente.

Para solucionar este problema:

  1. Utilice el método para desactivar la Thread.DisableComObjectEagerCleanup limpieza automática de RCW y el bombeo de mensajes que se produce, por subproceso. Esto permite a los desarrolladores no participar en la limpieza automática y el bombeo de mensajes correspondiente.

  2. Use el CleanupUnusedObjectsInCurrentContext método para notificar al tiempo de ejecución que limpie todos los RCW asignados en el contexto actual. Este método complementario permite a los desarrolladores controlar con precisión cuándo el tiempo de ejecución realiza la limpieza en el contexto actual.

Se aplica a