У нас есть приложение, которое позволяет настраивать пользовательский интерфейс и взаимодействие через SDK.Для этой цели разработана библиотека DLL с использованием VB.Net и SDK.Переменная объекта относится к приложению, и есть некоторые другие переменные объекта для компонентов в приложении.
Приложение позволяет назначать код VBScript кнопкам, отображаемым на панели инструментов.Код VBScript:
Dim Utility_Main
Set Utility_Main = CreateObject("Utility.Application")
Utility_Main.Launch()
Это запускает форму (пользовательский интерфейс), и пользователи могут взаимодействовать с приложением через эту форму.Хотя само приложение имеет собственный пользовательский интерфейс, эта служебная форма создана для поиска в базе данных, сохранения определенных атрибутов объектов приложения и т. Д.
Практически в каждой точке выхода формы вызывается процедура для сброса переменных объекта дляприложение и его компоненты, используя следующий код:
=======================================
Try
Marshal.ReleaseComObject(objX)
Catch
End Try
Try
objX = Nothing
GC.Collect()
Catch
End Try
Примечание 1: ReleaseComObject и установка для переменной объекта значения Nothing были включены в «If (Not objX - Nothing) Then».Но он был изменен на приведенный выше формат, чтобы обеспечить его вызов.
Примечание2: GC.Collect был добавлен позже для принудительного вызова GC.
========================================
Это делается для каждого объекта в обратном порядке иерархии объектов.
Исполняемый файл приложения (Application.exe) остается загруженным в обоих следующих случаях:
- Сначала закрывается приложение, а затем закрывается форма служебной программы
- Сначала закрывается форма служебной программы изатем приложение закрывается
Единственный раз, когда «Application.exe» исчезает, это если сначала закрывается приложение, а затем закрывается форма служебной программы, нажав «Завершить задачу» в диспетчере задач.
Любая помощь будет принята с благодарностью.