gcManagedToUnmanaged MDA

Note

Эта статья относится к .NET Framework. Он не применяется к более новым реализациям .NET, включая .NET 6 и более поздние версии.

Помощник gcManagedToUnmanaged по управляемой отладке (MDA) вызывает сборку мусора при переходе потока из управляемого в неуправляемый код.

Симптомы

Неуправляемый компонент пользователя вызывает нарушение доступа при попытке использовать управляемый объект, который был предоставлен COM. Объект COM, как представляется, был выпущен. Нарушение доступа недетерминировано.

Причина

Если неуправляемый компонент не ссылается на управляемый COM-объект правильно, среда выполнения может собрать управляемый объект, предоставляемый COM, когда неуправляемый компонент по-прежнему содержит ссылку на объект. Среда выполнения вызывается Release во время сборки мусора, поэтому если компонент пользователя использует объект перед сборкой мусора, то он еще не будет собран. Это источник недетерминированного.

Разрешение

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

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

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

Выходные данные

Этот MDA не выдает выходных данных.

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

<mdaConfig>
  <assistants>
    <gcManagedToUnmanaged/>
  </assistants>
</mdaConfig>

См. также