Поделиться через


Marshal.CleanupUnusedObjectsInCurrentContext Метод

Определение

Предписывает среде выполнения очистить все вызываемые оболочки времени выполнения (RCW), выделенные в текущем контексте.

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 ()
Атрибуты

Комментарии

Система взаимодействия перекачивает сообщения при попытке очистить RCW. Это гарантирует, что очистка rcWs с однопоточными подразделениями (STA) выполняется во всех приложениях, включая приложения, которые недостаточно часто накачиваются. Однако некоторые приложения, которые делают насос соответствующим образом, очень чувствительны к месту перекачки. Когда система взаимодействия перекачивает сообщения в этих приложениях в неожиданных местах, приложение может столкнуться с проблемами повторного входа, которые трудно диагностировать. Поэтому приложения должны иметь возможность управлять собственной прокачкой для конкретного STA и контролировать очистку RCW.

Однако разработчики часто контролируют только подмножество потоков в своем приложении и, следовательно, не могут гарантировать, что все потоки работают надлежащим образом.

Чтобы решить эту проблему, выполните указанные ниже действия.

  1. Thread.DisableComObjectEagerCleanup Используйте метод , чтобы отключить автоматическую очистку rcws и накачку сообщений, которая происходит, для каждого потока. Это позволяет разработчикам отказаться от автоматической очистки и накачки соответствующих сообщений.

  2. Используйте метод , CleanupUnusedObjectsInCurrentContext чтобы уведомить среду выполнения о очистке всех rcws, выделенных в текущем контексте. Этот сопутствующий метод позволяет разработчикам точно контролировать, когда среда выполнения выполняет очистку в текущем контексте.

Применяется к