У меня есть приложение, которое использует некоторые классы из родной COM-библиотеки DLL в изолированном развертывании.Активация Контекст, потерянный при работе с WinForm?
Упрощенный: Во время выполнения я загружаю dll с файлом манифеста в определенный каталог, не регистрируя его. Затем я создаю контекст активации, указывающий на этот каталог, а затем создаю экземпляры классов из dll. Предположим, что создадим класс A и через некоторое время класс B. В этом потоке все идет хорошо.
Проблема возникла, когда я изменил приложение на WinForm. При нажатии кнопки «1» я создаю контекст активации как и раньше, а затем создаю экземпляр класса A. Это хорошо работает, и поток возвращается к моей WinForm. Однако, когда нажата кнопка «2», я не могу создать класс B. Я получаю исключение, говоря, что класс не может быть найден!
Итак, похоже, что WinForm каким-то образом испортил мой контекст активации. - Почему? Что там происходит? - Есть ли способ вокруг него?
Немногочисленные примечания: - Я попытался создать созданные контекстные создания с использованием sxstrace.exe, однако он зарегистрировал только мое создание Контекста активации. - Я пробовал комментировать Application.EnableVisualStyles(), но это не помогло. - Если я завершу каждый звонок в свою DLL, создав и уничтожаю контекст активации, он работает, но, естественно, я не хочу туда попасть.