System.ObjectDisposedException

sen*_*ale 13 c#

我正在运行一些Windows应用程序,它工作了几天然后停止工作没有错误.现在我在事件查看器中发现了这个错误.也许有人知道什么会导致这个错误?

事件类型:错误

事件源:.NET Runtime 2.0错误报告事件

类别:无

事件ID:5000

日期:2010年10月30日

时间:21:58:57

用户:N/A.

电脑:SERVER-PROD

描述:EventType clr20r3,P1 program.exe,P2 1.0.0.0,P3 4cca7ed1,P4 mscorlib,P5 2.0.0.0,P6 4be90358,P7 1164,P8 0,P9 system.objectdisposedexception,P10 NIL.

Mar*_*all 20

ObjectDisposedException是:

在已处置对象上执行操作时引发的异常.(来源)

换句话说,如果实现了实现IDisposable接口的类的实例 - 通过调用Dispose()或隐式显式,例如,如果它出现在using语句中或其他方式 - 任何尝试调用对象上的方法都会引发上面的例外.

与大多数调试问题一样,如果不实际查看代码并在调试器中运行它,很难说是什么导致了您的问题.你说在运行几天后程序崩溃了ObjectDisposedException.根据我的经验,这通常意味着两件事之一:

  1. 有一些非常不寻常的代码路径,一旦采取,总会导致崩溃
  2. 一个竞争条件在程序线程之间存在.因此,崩溃看起来不可预测并且可能难以再现

我的建议是在调试器中启动程序,并使其保持运行直到抛出异常.然后你可以回到这里并向我们提供相关代码,堆栈跟踪,调试输出等.


Nei*_*ell 6

有东西正在访问已被处置的对象.如果您在表单上有多线程,通常会发生这种情况.启动backgroundworker/thread/timer,然后处理表单.当backgroundworker/thread/timer尝试以某种方式更新表单时,会出现此异常.