На самом деле не уверен, что я могу сделать с этим, но в надежде, что кто-то может быть в состоянии помочьпроцесс Принудительно закрыть, когда объект ком уничтожен
В основном я разработал систему, которая обменивается информацией с системой учета рабочего стола через интерфейс ком
Что я сделал это добавил ссылку на проект для библиотеки ком моя .net проекта, то в моем коде я создаю новый экземпляр
Dim myObject as New AccountingLibraryType
затем это позволяет мне доступ к видимому свойства, процедуры и функции и т. д., например
myObject.Login("Login details go here")
Эта часть все работает отлично
Моя проблема начинается, когда я закончу работать с экземпляром моего объекта. Независимо от того, что я делаю, я часто не в конечном итоге процесс все еще работает
Когда я отбрасывая мой объект я следующий
myObject.Logout 'As per Accounting software developers, should close process
GC.Collect()
Marshel.ReleaseComObject(myObject) ' Also tried Marshal.FinalReleaseComObject(myObject)
myObject = Nothing
Даже после всего этого процесса еще осталось работать в моей менеджер задач.
Я исследовал процесс получения ProgID, но, к сожалению, конечные пользователи обычно работают непосредственно в бухгалтерском программном обеспечении, я не могу гарантировать, что я получу правильный процесс.
Насколько я вижу, на объекте com нет ничего доступного для идентификации процесса для него. я нашел, что я могу получить атрибут коллекции, но опять-таки не понимаю, в любом случае, чтобы получить от этого к правильному процессу
Dim attributes As AttributeCollection
attributes = TypeDescriptor.GetAttributes(GetType(AccountingLibraryType))
Так во-первых, что-нибудь еще, что я мог делать, чтобы обеспечить процесс полностью закрыто, когда я закончил с ним
Во-вторых, есть ли лучший способ создать экземпляр объекта, где я могу получить какую-то форму дескриптора процесса, но все же имею доступ к видимым свойствам и методам. Я посмотрел Process и StartInfo, но не мог понять, как добраться до нужных методов и т. Д.
Я подозреваю, что есть проблема с внутренней сборкой мусора, если бухгалтерское программное обеспечение. Я говорил с ними несколько раз об этом, но они не хотят ничего с этим поделать.
Цените помощь
Должно сказать, что я написал собственный класс-оболочку для этого, который реализует IDisposable. В Sub Dispose есть место, где я очищаю ссылки на объекты. – Hursey