Marshal.CleanupUnusedObjectsInCurrentContext Метод

Определение

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

C#
public static void CleanupUnusedObjectsInCurrentContext ();
C#
[System.Security.SecurityCritical]
public static void CleanupUnusedObjectsInCurrentContext ();
Атрибуты

Комментарии

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

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

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

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

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

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

Өнім Нұсқалар
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1