我正在使用Fluxor开发一个服务器端应用程序,该项目现在包括六个Actions以及相应数量的Reducers和Effects。在完成时,我预计会有20多个动作和相关的减速器和效果。
Fluxor的状态管理运行良好,但当我构建项目时,我开始随机获得以下InvalidOperationException:
System.InvalidOperationException
HResult=0x80131509
Message=DisposableCallback with Id "StateSubscriber.Subscribe" was not disposed.
Source=Fluxor
StackTrace:
at Fluxor.DisposableCallback.Finalize()
异常并没有在我的代码中引发——它只是弹出而已。StackTrace没有给我很多东西,我有点纠结于如何诊断和纠正这个问题。
当异常发生时,我的应用程序崩溃,然后,通常情况下,在启动时立即再次显示异常。"全部重建"似乎可以清除它,但我怀疑存在垃圾收集/内存管理问题。
在我的代码中,我没有显式地处理任何Fluxor对象,而是希望它能在Fluxor框架中处理。然而;StateSubscriber.Subscribe;这让我怀疑是否应该处理Fluxor对象。有人能给我一些最佳实践指导吗?
我使用的是Fluxor 3.1.1,见3.2刚刚发布。我会升级到那个版本,看看是否有什么变化。同时,任何关于如何诊断这个问题的想法都将不胜感激。
FluxorComponent通过重写OnInitialized自动订阅状态。
这个错误的罪魁祸首是在重写方法时调用了错误的基方法,或者在重写Dispose时没有调用基方法;出于其他原因,请参阅:https://github.com/mrpmorris/Fluxor/blob/master/Docs/disposable-callback-not-disposed.md