【问题标题】:BooleanDisposable usage guidelineBooleanDisposable 使用指南
【发布时间】:2015-09-29 13:16:19
【问题描述】:

作为一般的编码指南,什么时候应该从响应式扩展中使用 BooleanDisposable?

https://github.com/Reactive-Extensions/Rx.NET/blob/master/Rx.NET/Source/System.Reactive.Core/Reactive/Disposables/BooleanDisposable.cs

【问题讨论】:

    标签: c# .net system.reactive


    【解决方案1】:

    好的,关于问题的反馈不多,我想它有点小众,这里是:

    如果您使用 volatile bool _isDisposedBooleanDisposable 前者,它的设计更简洁。

    关于 volatile 关键字的更多信息:Here

    【讨论】:

      【解决方案2】:

      通常,Dispose 一个 IDisposable should be idempotent - 您应该能够多次 Dispose 它而不会产生负面影响。

      这样做的后果是您几乎从不关心 IDisposable 是否已被处置。完成后将其丢弃即可。

      在我使用 Rx 的时候,我还没有遇到过需要知道 Disposable 实例是否已经被释放的情况。通常来自 Rx 的 Disposable 对象被组合然后从订阅中返回。知道 Disposable 是否已被处置几乎不是有用的信息。

      如果您需要在 Disposable 被 Disposed 时执行某些操作,那么您只需使用 Disposable.Create 并在操作中执行您需要执行的任何操作。

      所以我要说的关于 BooleanDisposable 的唯一准则是,如果您认为自己需要它,那么您的设计可能会比它需要的更复杂。在这方面类似于终结器指南。

      【讨论】:

      • 好点子,我更多地考虑在类内部使用它,这样您就不会多次执行敏感代码。
      猜你喜欢
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 2014-12-16
      • 1970-01-01
      • 2016-05-15
      相关资源
      最近更新 更多