Marshal.CleanupUnusedObjectsInCurrentContext Methode

Definition

Benachrichtigt die Laufzeit, dass alle im aktuellen Kontext reservierten Runtime Callable Wrapper (RCW) bereinigt werden sollen.

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

Das Interopsystem pumpt Nachrichten, während es versucht, RCWs zu sauber. Dadurch wird sichergestellt, dass die Bereinigung für Single-Threaded Apartment-RCWs (Single-Threaded Apartment, STA) in allen Anwendungen erfolgt, einschließlich Anwendungen, die nicht oft genug pumpen. Einige Anwendungen, die eine Pumpe durchführen, sind jedoch sehr empfindlich darauf, wo das Pumpen stattfindet. Wenn das Interop-System Nachrichten in diesen Anwendungen an Stellen pumpt, die unerwartet sind, kann die Anwendung probleme bei der Wiederzurückgabe auftreten, die schwer zu diagnostizieren sind. Daher müssen Anwendungen in der Lage sein, ihr eigenes Pumpen für eine bestimmte STA zu steuern und die sauber 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 gepumpt werden.

So beheben Sie dieses Problem

  1. Verwenden Sie die Thread.DisableComObjectEagerCleanup -Methode, um die automatische Bereinigung von RCWs und das nachrichtenbasierte Pumping pro Thread zu deaktivieren. Auf diese Weise können Entwickler die automatische sauber und das entsprechende Nachrichtenpumping deaktivieren.

  2. Verwenden Sie die CleanupUnusedObjectsInCurrentContext -Methode, um die Runtime zu benachrichtigen, um alle RCWs zu sauber, die im aktuellen Kontext zugeordnet sind. Mit dieser Begleitmethode können Entwickler genau steuern, wann die Runtime bereinigungen im aktuellen Kontext durchführt.

Gilt für: