C# 错误的循环依赖异常-以快速顺序解析组件

C# 错误的循环依赖异常-以快速顺序解析组件,c#,.net,exception,dependency-injection,castle-windsor,C#,.net,Exception,Dependency Injection,Castle Windsor,我正在使用一个工厂来解析Castle Windsor中的组件(带有参数),它正常工作。但是,(暂时的)实例创建与传入事件相关联,如果事件间隔太短,则会出现循环依赖项异常 为什么??我不应该因为观察到同样的工厂方法正常工作而得到这个异常,因为我不相信有任何实际的循环依赖 计时太近/对象创建太快时 这是显示详细信息的日志,请注意,这两个调用在时间上非常接近(需要) 如何修复它 对factory方法的调用是否在不同的线程中?您使用的是工厂设备吗?另外,您的具体类的依赖项是什么?PatrickQu

我正在使用一个工厂来解析Castle Windsor中的组件(带有参数),它正常工作。但是,(暂时的)实例创建与传入事件相关联,如果事件间隔太短,则会出现循环依赖项异常

  • 为什么??我不应该因为观察到同样的工厂方法正常工作而得到这个异常,因为我不相信有任何实际的循环依赖
计时太近/对象创建太快时 这是显示详细信息的日志,请注意,这两个调用在时间上非常接近(需要)

  • 如何修复它

对factory方法的调用是否在不同的线程中?您使用的是工厂设备吗?另外,您的具体类的依赖项是什么?PatrickQuirk我启动了一个干净的项目,试图复制这个问题,但无法-我尝试模仿我从复杂项目中想到的大多数方面,问题仍然存在,但无法引发异常。这就引出了一个问题,在什么情况下会发生自循环,因为我到处都看了,没有看到类自身实例化,即原则上什么时候会发生这种情况:组件“xxx.ProcessChanger”被解析为组件“xxx.ProcessChanger”的依赖项,而组件“xxx.ProcessChanger”是正在解析的根组件?
IProcessChanger CreateProcessChanger(int pid) 10472 @ 15:36:31.667
IProcessChanger CreateProcessChanger(int pid) 5700 @ 15:36:31.700
First Chance Exception in xxx.vshost.exe, sender Name:xxx.vshost.exe
There are no context policies.
! CircularDependencyException: Dependency cycle has been detected when trying to resolve component 'xxx.ProcessChanger'.
The resolution tree that resulted in the cycle is the following:
Component 'xxx.ProcessChanger' resolved as dependency of
    component 'xxx.ProcessChanger' which is the root component being resolved.
 @ 15:36:31.948
A first chance exception of type 'Castle.MicroKernel.CircularDependencyException' occurred in Castle.Windsor.dll
Unhandled Exception! CircularDependencyException: Dependency cycle has been detected when trying to resolve component 'xxx.ProcessChanger'.
The resolution tree that resulted in the cycle is the following:
Component 'xxx.ProcessChanger' resolved as dependency of
    component 'xxx.ProcessChanger' which is the root component being resolved.
 @ 15:36:32.013
   at Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context, Boolean requiresDecommission, Boolean instanceRequired, Burden& burden)
   at Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext context, Boolean instanceRequired)
   at Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext context)
   at Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler handler, Type service, IDictionary additionalArguments, IReleasePolicy policy)
   at Castle.MicroKernel.DefaultKernel.Castle.MicroKernel.IKernelInternal.Resolve(Type service, IDictionary arguments, IReleasePolicy policy)
   at Castle.MicroKernel.DefaultKernel.Resolve(Type service, IDictionary arguments)
   at Castle.Windsor.WindsorContainer.Resolve[T](IDictionary arguments)
   at xxx.BaseFactory.Create[T](Object[] arguments) ...
The program '[9116] xxx.vshost.exe' has exited with code -1073741819 (0xc0000005) 'Access violation'.