【问题标题】:Program crash with System.ObjectDisposedExceptionSystem.ObjectDisposedException 程序崩溃
【发布时间】:2011-10-16 16:53:38
【问题描述】:

我的程序有一个奇怪的问题。我正在开发一个 Windows 窗体应用程序。当我通过 Visual Studio (F5) 对其进行调试时,它可以正常工作,但是当我运行它的可执行文件时,它会崩溃并给我“mscorlib.dll 中发生'System.ObjectDisposedException' 类型的未处理异常”。

我试图放置一个顶级(在我最外层的函数上)try/catch 来捕获这个异常,但程序仍然崩溃。我在这里错过了什么?

我没有上传代码,因为我必须上传整个代码让你看看问题出在哪里。

【问题讨论】:

  • 问题是在调试时 GC 不会收集经常被释放的对象。在代码中的某处,您尝试访问不再具有有效引用的对象。它已被处置。如果没有一些代码,就不可能准确地说出在哪里。
  • 如果他试图访问它,显然他必须引用它,因此没有 GC。

标签: c# winforms crash objectdisposedexception


【解决方案1】:

哇,没有被顶级 catch 块捕获的 ObjectDisposedException?

我不确定在这种情况下我会做什么 - 很明显,您想查看堆栈跟踪并找出处理的内容。有一些无法捕获的异常,但这不是其中之一。我可能会在 AppDomain.UnhandledException 事件上附加一个处理程序,看看是否发现了什么。

【讨论】:

    【解决方案2】:

    如果您可以获得异常的堆栈跟踪,它应该可以帮助您调试根本原因。您可能会发现调用堆栈窗口对此很有帮助。在此处查看说明:

    您可能还希望禁用“仅我的代码”选项以在 Visual Studio 中进行调试。这可能会为您提供更好的异常调试信息。按照此处的说明(禁用):

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 2020-03-14
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多