Memory management 当托管资源未被处置时,什么会导致应用程序在后续启动时崩溃?
我正在开发一个运动跟踪设备的应用程序,发现了一些让我好奇的奇怪行为。设备SDK由三个DLL组成,其中一个(应用程序中使用的主要引用DLL)为非本机DLL,另两个为本机DLL 应用程序有三个主要角色,控制器(设备和应用程序之间的连接)、侦听器(接收跟踪信息)和无休止的帧对象流(侦听器接收的数据)。所有这些物品都是一次性的,我认为它们使用的是非托管资源 如果我不从控制器中删除侦听器,然后处置控制器,则应用程序将在后续启动时崩溃。这种行为是偶发的,可能发生在第二次、第三次或以后的启动中 虽然我正在确定我正在处理这些对象,但我仍然很好奇什么样的逻辑或缺乏逻辑会导致这种行为。因为我希望在可执行文件停止运行时处理所有对象 设备驱动程序是否可以保留引用?解决这个问题的最佳方法是什么? 所以问题不是如何处置,而是什么会/可能导致这种情况,为什么会这样,我又该如何处理 更多信息:Memory management 当托管资源未被处置时,什么会导致应用程序在后续启动时崩溃?,memory-management,native,dispose,unmanaged,drivers,Memory Management,Native,Dispose,Unmanaged,Drivers,我正在开发一个运动跟踪设备的应用程序,发现了一些让我好奇的奇怪行为。设备SDK由三个DLL组成,其中一个(应用程序中使用的主要引用DLL)为非本机DLL,另两个为本机DLL 应用程序有三个主要角色,控制器(设备和应用程序之间的连接)、侦听器(接收跟踪信息)和无休止的帧对象流(侦听器接收的数据)。所有这些物品都是一次性的,我认为它们使用的是非托管资源 如果我不从控制器中删除侦听器,然后处置控制器,则应用程序将在后续启动时崩溃。这种行为是偶发的,可能发生在第二次、第三次或以后的启动中 虽然我正在确定
- 没有例外
- 附加调试器不会提供更多信息