Поддерживает ли DangerousAddRef весь SafeHandle или только дескриптор?
Я нахожусь в ситуации, когда у меня есть объект aC#, содержащий HGLOBAL и List
Я пытаюсь не увязнуть в деталях общего дизайна (я уже ожидаю криков от тех, кто понимает, что я делаю в предыдущем абзаце). Мой вопрос в настоящее время касается управления жизненным циклом с использованием функций, которые я бы хотел задокументировать по-другому.
Я преобразовал класс, содержащий HGLOBAL и List
Эффективно ли вызов DangerousAddRef увеличивает счетчик ссылок для всего объекта SafeHandle? Будет ли список <Делегат> включен в этот счетчик ссылок? Другой способ задать вопрос - эффективно ли DangerousAddRef создает GCHandle для всего объекта SafeHandle или он делает это просто для члена SafeHandle.handle внутри?
Если он не применяется к объекту в целом, то List
Если это относится к объекту в целом, то я только что создал блок объектов с подсчетом ссылок в куче, собранной мусором, и мне лучше быть уверенным, что я не создал никаких циклов ссылок.
Я подозреваю, что это последнее, но очень мало поисковых запросов в Google по этому виду, и когда единственными симптомами, с которыми вы сталкиваетесь, являются нарушения неуправляемого доступа из потока финализатора при завершении процесса, когда не запускается ни один фактический управляемый код, тогда он запускается трудно понять, идете ли вы в правильном направлении.