当我的应用程序终止时,我发现 IDE 有时会中断。
发生这种情况时,调用堆栈为空,并且线程列表显示一些不会向我透露任何信息的线程。
当我选择“调试器”-“步入”时,IDE 似乎正常退出/最终退出,因此我不知道如何进一步调查导致中断的原因。
单击“检查正在运行的任务”不会显示任何任务。 单击“继续执行”似乎会正常退出调试。 单击“显示诊断工具”会显示事件“执行时停止:执行时停止”,这并没有告诉我更多信息。
附上截图。
我如何调查导致此中断的原因?
编辑: 我已经尝试了一位论坛成员的建议,但我认为这不会产生任何对我有帮助的结果。这是截图:
如果发生异常的代码是库的一部分或不是您编写的其他内容,您可能无法看到发生异常的代码。以下内容可能会有所帮助:
调试 > 选项 > 常规 > 取消选中“仅启用我的代码”
我没有找到任何方法来实际调试问题。 我用暴力方式解决了这个问题:
我一一删除了所有程序集和 COM 对象,直到错误消失。
就我而言,我在模块中有一个带有 WithEvents 的公共控件。 看来 VB.NET 根本不喜欢这样。 从现在开始,我将把控件及其withevent放在一个表单中。
然而,主要问题仍然存在:Visual Studio 没有提供任何帮助来轻松隔离问题。
发生这种情况的原因是某些方法或构造函数无法访问(私有或内部),请将其设置为公共。
XAML需要调用方法来启动应用程序
当单线程 Winforms 应用程序需要超过 60 秒才能完成主线程中的操作时,也可能会发生这种情况。
我以肮脏的方式解决了这个问题,在处理时间过长的过程中,从主线程定期调用 Application.DoEvents() 。 Application.DoEvents 调用之间发生的异常在 IDE 中得到正确处理。
这只是当您在调试模式下运行程序时的警告消息。 如果您更改为“释放”模式,您将不会再看到此消息。
我遇到了类似的问题,虽然附加进程会在中断模式下抛出异常应用程序,但我使用了上述所有建议,例如:
对我来说,有效的是,在我发现我正在调用 HIDSharp.dll 中的外部组件之后,使用并行堆栈搜索线索,创建的句柄没有被释放,没有使用 dispose 或 close,所以它正在使用外部资源,并且作为结果它处于休息模式。
希望它可以帮助人们在应用程序中寻找句柄或循环。