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 los RCW. Esto garantiza que la limpieza de los RCW de apartamento de un solo subproceso (STA) se produce en todas las aplicaciones, incluidas las aplicaciones que no bombean con frecuencia suficiente. Sin embargo, algunas aplicaciones que bombean adecuadamente son muy sensibles a dónde se produce la bombeo. Cuando el sistema de interoperabilidad bombea 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 para 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. Use el método para desactivar la Thread.DisableComObjectEagerCleanup limpieza automática de RCW y la bomba 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