Marshal.CleanupUnusedObjectsInCurrentContext Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Avertit le runtime de nettoyer tous les wrappers pouvant être appelé au runtime 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 rcWs. Cela garantit que le nettoyage pour les rcWs à thread unique (STA) se produit dans toutes les applications, y compris les applications qui ne pompent pas assez souvent. Toutefois, certaines applications qui effectuent une pompe appropriée sont très sensibles à l’endroit où se produit la pompe. Lorsque le système d’interopérabilité pompe les messages dans ces applications, à des endroits inattendus, l’application peut rencontrer des problèmes de réentrance difficiles à diagnostiquer. Par conséquent, les applications doivent être en mesure de contrôler leur propre pompe pour une sta particulière et de contrôler le nettoyage des RCWs.
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 à pomper correctement.
Pour résoudre ce problème :
Utilisez la méthode pour désactiver le Thread.DisableComObjectEagerCleanup nettoyage automatique des rcWs et le pompement de messages qui se produit, sur une base par thread. Cela permet aux développeurs de refuser le nettoyage automatique et le pompement de messages correspondant.
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 quand le runtime effectue le nettoyage dans le contexte actuel.