【发布时间】:2011-04-30 10:29:28
【问题描述】:
我正在从 ASP.NET 调用第三方 com 对象,该对象调用如下可执行文件
b = new myBw.Baan4Class();
在任何给定时间,都可能有多个由 ASP 进程调用的实例。 我怎样才能得到 b 的 PID,这样我就可以在不打扰(杀死)其他人的情况下“杀死”它..
【问题讨论】:
我正在从 ASP.NET 调用第三方 com 对象,该对象调用如下可执行文件
b = new myBw.Baan4Class();
在任何给定时间,都可能有多个由 ASP 进程调用的实例。 我怎样才能得到 b 的 PID,这样我就可以在不打扰(杀死)其他人的情况下“杀死”它..
【问题讨论】:
在不了解您正在使用的 COM 对象的更多详细信息的情况下,我认为没有什么好方法可以将它启动的 exe 与您正在创建的对象关联起来。
话虽如此,您可以将创建这些对象的责任委托给一个集中位置(可能在 SingleInstance 模式下运行的 WCF 服务),该位置可以通过实例化一个新对象并等待启动 exe 将创建的对象关联到 exe .当 exe 启动后,它可以将它创建的对象与启动的 exe 关联起来。您可以使用WMI 来检测新的 exe 何时启动。
在 asp.net 中几乎不可能做到这一点,因为多个用户可能同时实例化这些对象。如果您尝试在此处执行此操作,您将遇到竞争条件。
这里有一个类似的问题:How to determine the association between a VB6 app and an exe instanced with CreateObject()
【讨论】: