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.
Однако разработчики часто контролируют только подмножество потоков в своем приложении и, следовательно, не могут гарантировать, что все потоки работают надлежащим образом.
Чтобы решить эту проблему, выполните указанные ниже действия.
Thread.DisableComObjectEagerCleanup Используйте метод , чтобы отключить автоматическую очистку rcws и накачку сообщений, которая происходит, для каждого потока. Это позволяет разработчикам отказаться от автоматической очистки и накачки соответствующих сообщений.
Используйте метод , CleanupUnusedObjectsInCurrentContext чтобы уведомить среду выполнения о очистке всех rcws, выделенных в текущем контексте. Этот сопутствующий метод позволяет разработчикам точно контролировать, когда среда выполнения выполняет очистку в текущем контексте.