2

我正在使用 Fluxor 开发一个服务器端应用程序,该项目现在包括六个 Actions 以及相应数量的 Reducer 和 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 并没有给我太多的帮助,我对如何诊断和纠正这个问题有点困惑。

当异常发生时,我的应用程序崩溃,然后通常会在启动时立即再次显示异常。Rebuild All 似乎清除了它,但我怀疑存在垃圾收集/内存管理问题。

在我的代码中,我没有明确地处理任何 Fluxor 对象,并且期望在 Fluxor 框架中处理这些对象。然而,“StateSubscriber.Subscribe”让我想知道我是否应该处理 Fluxor 对象。有人可以给我一些最佳实践指导吗?

我正在使用 Fluxor 3.1.1,看到 3.2 刚刚发布。我会升级到那个,看看是否有任何变化。同时,我们将不胜感激有关如何诊断此问题的任何想法。

4

1 回答 1

1

FluxorComponent 通过重写 OnInitialized 自动订阅状态。

这个错误的罪魁祸首是在重写方法时调用了错误的基方法,或者在重写 Dispose 时没有调用基方法;其他原因见:https ://github.com/mrpmorris/Fluxor/blob/master/Docs/disposable-callback-not-disposed.md

于 2020-07-29T07:26:06.057 回答