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


gcUnmanagedToManaged MDA

Обновлен: Ноябрь 2007

Управляемый помощник по отладке (MDA) gcUnmanagedToManaged инициирует процесс сборки мусора каждый раз, когда происходит передача потока из неуправляемого в управляемый код.

Признаки

Приложение, выполняющее неуправляемый пользовательский компонент с помощью СОМ и вызова неуправляемого кода, является причиной недетерминированного нарушения прав доступа в среде CLR.

Причина

Если приложение выполняет неуправляемый пользовательский компонент, такие компоненты, возможно, повреждают кучу, в которой выполняется сборка мусора. Это является причиной нарушения прав доступа в среде CLR при попытке сборщика мусора обойти граф объекта.

Решение

Включение помощника уменьшает интервал времени с момента, когда неуправляемый компонент повреждает кучу, в которой производится сборка мусора, и когда происходит нарушение прав доступа, посредством принудительного вызова сборщика мусора перед каждой управляемой передачей.

Влияние на среду выполнения

Инициирует процесс сборки мусора каждый раз, когда выполняется потоковая передача из неуправляемого в управляемый код.

Результат

Данный MDA не дает результатов.

Конфигурация

<mdaConfig>
  <assistants>
    <gcUnmanagedToManaged/>
  </assistants>
</mdaConfig>

См. также

Основные понятия

Диагностика ошибок посредством управляемых помощников по отладке

Общие сведения о маршалинге взаимодействия

Ссылки

gcManagedToUnmanaged MDA

MarshalAsAttribute

Другие ресурсы

Взаимодействие