Bagikan melalui


Marshal.CleanupUnusedObjectsInCurrentContext Metode

Definisi

Memberi tahu runtime untuk membersihkan semua Runtime Callable Wrappers (RCW) yang dialokasikan dalam konteks saat ini.

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

Keterangan

Sistem interop memompa pesan saat mencoba membersihkan RCW. Ini memastikan bahwa pembersihan untuk RCW apartemen berulir tunggal (STA) terjadi di semua aplikasi, termasuk aplikasi yang tidak cukup sering memompa. Namun, beberapa aplikasi yang melakukan pompa dengan tepat sangat sensitif terhadap tempat pemompaan terjadi. Ketika sistem interop memompa pesan dalam aplikasi ini, di tempat-tempat yang tidak terduga, , aplikasi dapat mengalami masalah reentransi yang sulit didiagnosis. Oleh karena itu, aplikasi harus dapat mengontrol pemompaan mereka sendiri untuk STA tertentu dan untuk mengontrol pembersihan RCW.

Namun, pengembang sering kali hanya mengontrol subset utas dalam aplikasi mereka dan dengan demikian tidak dapat memastikan bahwa semua utas memompa dengan tepat.

Untuk mengatasi masalah ini:

  1. Thread.DisableComObjectEagerCleanup Gunakan metode untuk menonaktifkan pembersihan otomatis RCW, dan pemompaan pesan yang terjadi, berdasarkan per utas. Ini memungkinkan pengembang untuk menolak pembersihan otomatis, dan pemompaan pesan yang sesuai.

  2. CleanupUnusedObjectsInCurrentContext Gunakan metode untuk memberi tahu runtime untuk membersihkan semua RCW yang dialokasikan dalam konteks saat ini. Metode pendamping ini memungkinkan pengembang untuk mengontrol dengan tepat ketika runtime melakukan pembersihan dalam konteks saat ini.

Berlaku untuk