这是事情。我通过COM连接到KNX/EIB的一些设备。但有时 - 我想做好准备迎接最糟糕的情况 - 我的应用程序崩溃让所有对象和库暴露在某处,不知何故。我注意到,当我重新启动应用程序,我有麻烦再次获得连接。我得到一个实际上正常工作正常的连接过程的错误。有时候这个连接过程有时并不是随机的。那很不好!经过一段时间(几分钟)后,似乎在一系列完整失败后再次工作。但我认为我现在看到了一种模式。它在崩溃之后不起作用,没有干净的断开连接。我的猜测是有一些对象与设备保持连接,为什么我无法获得新的连接。这就是为什么我问这个问题。 如何在完全重新启动后卸载未使用的COM对象/库?
问:
- 如何卸载那些不再使用的对象杀死亡灵连接?
- 如何让Windows检查未使用的库被卸载?
我只是想告诉Windows,“我搞砸了,我需要继续我的工作,请为我清理我的混乱,这样我就可以开始新鲜了,我应该得到第二次机会吗?
编辑:
该场景是该应用程序已崩溃和关闭。我不再提及任何东西。没有最后条款或任何东西。该应用程序只能重新启动。我能做些什么来以编程方式清理之前所做的混乱?
编辑2:
汉斯给了我一个杀死负责任的服务器的暗示。所以现在我在启动时调用taskkill来解决这个问题(至少在我开发的时候)。它的工作原理!
C:\Windows\System32\taskkill.exe /F /IM Falcon.exe
你可能需要调用Marshal.ReleaseComObject(在finally块或异常处理程序或其他东西) – 2015-04-01 12:25:34
@MichaelEdenfield我的断开程序充满了。但就像我说的,我想为最坏的情况做好准备。该应用程序崩溃,用户只能重新启动它。 – Bitterblue 2015-04-01 12:42:09
听起来问题出在连接的另一端,无论是出于过程对象还是出现了不容错误的服务。我认为你可以在这里做的最好的是建立你的应用程序来识别这种情况并在启动时处理它 – 2015-04-01 12:51:11