首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尼尼特的窃听器?

尼尼特的窃听器?
EN

Stack Overflow用户
提问于 2012-02-16 16:00:29
回答 1查看 618关注 0票数 1

寻求关于我是否有真正的bug的建议,如果有,如何最好地修复它:

我有一个高度多线程的进程,运行24/7。有几个对象被注入了ThreadScope提供的绑定。

随着过程负荷的不断增加,过程开始崩溃的频率越来越高。事件日志中的错误消息如下:

框架版本: v4.0.30319描述:进程因未处理的异常而终止。异常信息:> **Ninject.Activation.Caching.GarbageCollectionCachePruner.PruneCacheIfGarbageCollectorHasRun(System.Object)**堆栈: at > System.NullReferenceException > at System.Threading.ExecutionContext.runTryCode(System.Object) at > System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode,> CleanupCode,System.Object) at > System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,> System.Threading.ContextCallback,System.Object,Boolean) at > System.Threading._TimerCallback.PerformTimerCallback(System.Object)

下载了Ninject和googling的源代码后,无论是Ninject还是.NET框架(取决于您所听的是谁),它似乎都是一个问题。

看起来,绑定缓存的剪枝正在尝试重新启动finally子句中已释放的计时器对象。一年前,有人试图用这个逻辑来解决一个问题,但似乎还远远不够:http://groups.google.com/group/ninject/browse_frm/thread/cedf5d129120ee18/27119d7d3761eedd?tvc=1#27119d7d3761eedd

在本文中,微软解释了系统定时器是如何工作的:http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx

根据MSDN文章,在调用TimerCallback之前,GC可能已经清理了timer对象。因此,在"finally“子句中重新启动计时器会导致崩溃。

问题:我如何在Ninject代码中修复这个问题?在这种情况下,我应该忽略错误吗?我应该创建一个新的计时器吗?我该做点别的吗?目前,我已经修改了代码以忽略错误,这样我就可以简单地阻止进程崩溃.但担心这不是一个很好的解决方案,任何建议都是值得赞赏的。

相关文章:http://groups.google.com/group/ninject/browse_thread/thread/8cdf8362a41153c7

.NET 3.5 C# Bug with System.Timer System.ObjectDisposedException: Cannot access a disposed object

Ninject Garbage Collection

EN

回答 1

Stack Overflow用户

发布于 2012-02-16 16:28:58

在2.2中有一个错误,在释放缓存时会导致一个争用条件。这是在3.0中修正的

请参阅https://github.com/ninject/ninject/blob/fa46b56b683d5ddf570d00c1bd057ecfa0b3b487/src/Ninject/Activation/Caching/GarbageCollectionCachePruner.cs

通常,您不应该看到任何问题,除非您在运行时创建和处理内核-这不是一个好的方式使用尼尼微,并应尽可能避免。这样,出现这个问题的唯一情况应该是关机。

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

https://stackoverflow.com/questions/9314554

复制
相关文章

相似问题

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