отключенный MDA отключено

Note

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

Помощник disconnectedContext по управляемой отладке (MDA) активируется при попытке среды CLR перейти в отключенную квартиру или контекст при обслуживании запроса относительно COM-объекта.

Симптомы

Вызовы, сделанные в вызываемой оболочке среды выполнения (RCW), доставляются базовому компоненту COM в текущей квартире или контексте вместо того, в котором они существуют. Это может привести к повреждению и потере данных, если компонент COM не является многопоточным, как в случае компонентов однопоточной квартиры (STA). Кроме того, если RCW является прокси-сервером, вызов может привести к вызову COMException с помощью HRESULT RPC_E_WRONG_THREAD.

Причина

Когда среда CLR пытается перейти в нее, среда OLE или контекст завершена. Это чаще всего вызвано завершением работы квартир STA до того, как все com-компоненты, принадлежащие квартире, были полностью освобождены, это может произойти в результате явного вызова пользовательского кода в RCW или в то время как среда CLR управляет компонентом COM, например, когда среда CLR освобождает com-компонент при сборе мусора связанного RCW.

Разрешение

Чтобы избежать этой проблемы, убедитесь, что поток, принадлежащий STA, не завершается до завершения приложения со всеми объектами, живущими в квартире. Это же относится к контекстам; Убедитесь, что контексты не завершаются до завершения работы приложения с любыми COM-компонентами, которые находятся в контексте.

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

Этот MDA не влияет на среду CLR. Он сообщает только данные об отключенном контексте.

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

Сообщает контекстный файл cookie отключенной квартиры или контекста.

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

<mdaConfig>
  <assistants>
    <disconnectedContext />
  </assistants>
</mdaConfig>

См. также