Marshal.CleanupUnusedObjectsInCurrentContext Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Benachrichtigt die Laufzeit, um alle runtime callable Wrapper (RCWs) zu bereinigen , die im aktuellen Kontext zugeordnet sind.
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 ()
- Attribute
Hinweise
Die Interop-System pumpen Nachrichten, während versucht wird, RCWs zu bereinigen. Dadurch wird sichergestellt, dass die Bereinigung für STAWs (Single Threaded Apartment) in allen Anwendungen erfolgt, einschließlich Anwendungen, die nicht oft genug pumpen. Einige Anwendungen, die die Pumpe entsprechend durchführen, sind jedoch sehr empfindlich für den Ort der Pumpe. Wenn die Interop-Systemnachrichten in diesen Anwendungen, an stellen, die unerwartet sind, kann die Anwendung Auffälligkeitsprobleme auftreten, die schwer zu diagnostizieren sind. Daher müssen Anwendungen in der Lage sein, ihre eigene Pumpung für eine bestimmte STA zu steuern und die Bereinigung von RCWs zu steuern.
Entwickler steuern jedoch häufig nur eine Teilmenge der Threads in ihrer Anwendung und können daher nicht sicherstellen, dass alle Threads entsprechend pumpen.
So beheben Sie dieses Problem
Verwenden Sie die Thread.DisableComObjectEagerCleanup Methode, um die automatische Bereinigung von RCWs und die meldungsbasierte Pumpvorgänge pro Thread zu deaktivieren. Auf diese Weise können Entwickler die automatische Bereinigung und die entsprechende Meldungspumpe deaktivieren.
Verwenden Sie die CleanupUnusedObjectsInCurrentContext Methode, um die Laufzeit zu benachrichtigen, um alle RCWs zu bereinigen, die im aktuellen Kontext zugeordnet sind. Mit dieser Begleitmethode können Entwickler genau steuern, wann die Laufzeit im aktuellen Kontext Bereinigungen durchführt.