Я разрабатывал приложение C #, которое использует взаимодействие DLL с приложением внешней базы данных.
Это внешнее приложение запускается одновременно с моим приложением C # и доступно, пока мое приложение C #
Теперь реальный вопрос связан с управлением объектами, которые мне нужно создать для взаимодействия с внешним приложением.
Когда я объявляю объекты, которые доступны из ссылочной DLL, эти объектыесть методы, которые работают с файлами (которые являются собственностью) и запускают некоторые запросы (например, если это было сделано с помощью этого внешнего графического интерфейса приложения).Эти объекты уничтожаются "мной" с помощью Marshal.ReleaseComObject(A_OBJECT)
, в то время как другие запускаются в другой области приложения, с помощью AppDomain.CreateDomain("A_DOMAIN")
, выполняют операции и вызывают AppDomain.Unload("A_DOMAIN")
, освобождая библиотеки DLL, используемые для операции ...
Эти обходные пути сделаны для того, чтобы это внешнее приложение не «блокировало» файлы, используемые в этих операциях, что позволяет удалять или перемещать их из папки.* Оба эти «решения» были получены методом проб и ошибок, потому что я не владею каким-либо руководством по API.Верны ли эти решения?Можете ли вы объяснить мне различия?Мне действительно нужно работать с обоими решениями или одного должно хватить?
Спасибо!