首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectDisposedException - DangerousAddRef

ObjectDisposedException - DangerousAddRef
EN

Stack Overflow用户
提问于 2016-05-23 08:40:37
回答 1查看 2.4K关注 0票数 1

我得到了一个复杂的.net控制台应用程序,它在一些通知窗口中使用WPF,还可以执行一些http调用。在非常罕见的情况下,应用程序崩溃以及我能够获得的唯一错误消息来自于windows事件查看器:

代码语言:javascript
复制
Application: xyz.exe
Description: The process was terminated due to an unhandled exception.
Exception Info: System.ObjectDisposedException
Stack:
   at System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean ByRef)
   at Microsoft.Win32.Win32Native.SetEvent(Microsoft.Win32.SafeHandles.SafeWaitHandle)
   at System.Threading.TimerQueueTimer.Fire()
   at System.Threading.TimerQueue.FireNextTimers()

我不知道堆栈跟踪从哪里来。有什么办法找这个问题吗?以下是我的一些想法:

  • 既然堆栈上有这个计时器,那么它是否与System.Threading.Timer有关?因为在代码中有一些计时器?
  • 还涉及到一些使用超时的http通信(httpclient、httpwebrequest)。是否与此错误有关联?

很抱歉,这个问题不太明确,但我完全被困在这里,只是需要一些起点。

EN

回答 1

Stack Overflow用户

发布于 2017-11-26 09:15:52

我也遇到了同样的问题,并发现以下代码导致了异常:

代码语言:javascript
复制
using (ManualResetEvent resetEvent = new ManualResetEvent(false))
{
    timer.Dispose(resetEvent);
    resetEvent.WaitOne(1000);
}

如果计时器在一秒钟内未被释放,则可能会发生异常。解决方案是-只有当resetEvent方法返回true时才释放WaitOne。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37386373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档