我有一个客户/合作伙伴试图使用我们公开的 COM 功能将他们的应用程序与我们的应用程序链接起来。到目前为止,他们已经有了一个 COM 对象,它代表我们的软件包的一个实例,然后使用我们的 COM 方法根据他们在应用程序中所做的事情以编程方式为用户构建一些东西。它本质上是一个“导出”功能。
他们要求我做的是让用户决定何时关闭实例,但我不知道该怎么做。我的意思是当我们的软件包被加载时,它是可见的并且可以被用户交互。完成后,他们自然会单击右上角的叉号退出软件。这不起作用,因为 COM 对象在他们的应用程序中仍然是“活动的”。我们的软件包只能通过在任务管理器中终止进程来关闭,而通过 COM 加载它的应用程序保持打开状态。一旦他们的应用程序退出,我们的应用程序将自动关闭。由于 COM 调用,他们的应用程序似乎“拥有”了我们的应用程序。
我在 C# 中制作了一个快速演示应用程序,尝试使用Marshal.FinalReleaseComObject(myObject)
无济于事的东西。
我意识到将 COM 用于这种事情并不是它的真正用途,但希望有某种解决方法?客户/合作伙伴使用的是 VB.NET,但 C# 很好。