【发布时间】:2015-09-29 13:16:19
【问题描述】:
作为一般的编码指南,什么时候应该从响应式扩展中使用 BooleanDisposable?
【问题讨论】:
标签: c# .net system.reactive
作为一般的编码指南,什么时候应该从响应式扩展中使用 BooleanDisposable?
【问题讨论】:
标签: c# .net system.reactive
好的,关于问题的反馈不多,我想它有点小众,这里是:
如果您使用 volatile bool _isDisposed 与 BooleanDisposable 前者,它的设计更简洁。
关于 volatile 关键字的更多信息:Here
【讨论】:
通常,Dispose 一个 IDisposable should be idempotent - 您应该能够多次 Dispose 它而不会产生负面影响。
这样做的后果是您几乎从不关心 IDisposable 是否已被处置。完成后将其丢弃即可。
在我使用 Rx 的时候,我还没有遇到过需要知道 Disposable 实例是否已经被释放的情况。通常来自 Rx 的 Disposable 对象被组合然后从订阅中返回。知道 Disposable 是否已被处置几乎不是有用的信息。
如果您需要在 Disposable 被 Disposed 时执行某些操作,那么您只需使用 Disposable.Create 并在操作中执行您需要执行的任何操作。
所以我要说的关于 BooleanDisposable 的唯一准则是,如果您认为自己需要它,那么您的设计可能会比它需要的更复杂。在这方面类似于终结器指南。
【讨论】: