Marshal.CleanupUnusedObjectsInCurrentContext Méthode

Définition

Avertit le runtime de nettoyer tous les wrappers d’appel d’exécution (RCW) alloués dans le contexte actuel.

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

Remarques

Le système d’interopérabilité pompe les messages pendant qu’il tente de nettoyer les rcW. Cela garantit que le nettoyage des rcW d’appartements à thread unique (STA) se produit dans toutes les applications, y compris les applications qui ne pompent pas assez souvent. Toutefois, certaines applications qui pompent de manière appropriée sont très sensibles à l’endroit où le pompage se produit. Lorsque le système d’interopérabilité pompe des messages dans ces applications, dans des endroits inattendus, l’application peut rencontrer des problèmes de réentrance qui sont difficiles à diagnostiquer. Par conséquent, les applications doivent être en mesure de contrôler leur propre pompage pour une STA particulière et de contrôler le nettoyage des rcW.

Toutefois, les développeurs contrôlent souvent uniquement un sous-ensemble des threads dans leur application et ne peuvent donc pas s’assurer que tous les threads sont correctement pompé.

Pour résoudre ce problème :

  1. Utilisez la Thread.DisableComObjectEagerCleanup méthode pour désactiver le nettoyage automatique des rcW et le pompage des messages qui se produit, par thread. Cela permet aux développeurs de refuser le nettoyage automatique et le pompage des messages correspondant.

  2. Utilisez la CleanupUnusedObjectsInCurrentContext méthode pour avertir le runtime de nettoyer tous les rcW alloués dans le contexte actuel. Cette méthode complémentaire permet aux développeurs de contrôler précisément le moment où le runtime effectue le nettoyage dans le contexte actuel.

S’applique à