3

我正在开发一个运动跟踪设备的应用程序,并发现了一些让我好奇的奇怪行为。设备 SDK 包含三个 DLL,其中一个(应用程序中使用的主要引用 DLL)是非本地的,另外两个是本地的。

该应用程序具有三个主要参与者,Controller(设备和应用程序之间的连接)、Listener(接收跟踪信息)和无尽的 Frame 对象流(Listener 接收的数据)。所有这些项目都是一次性的,反过来我相信它们使用非托管资源。

如果我不从控制器中删除侦听器然后处置控制器,应用程序将在后续启动时崩溃。这种行为是零星的,它可能发生在第二次、第三次或更晚的启动时。

虽然我确保我正在处理对象,但我仍然很好奇什么逻辑或缺乏逻辑会导致这种行为。因为我希望在可执行文件停止运行时处理所有对象。

设备驱动程序可以保留参考吗?解决此问题的最佳方法是什么?所以问题在于如何处理,而是什么会/可能导致这种情况,以及为什么-以及我如何才能福尔摩斯这样做。

更多信息:

  • 没有例外
  • 附加调试器不会提供更多信息
4

0 回答 0