作为一般编码指南,何时应该使用反应式扩展中的
BooleanDisposable
?
文档: https://github.com/dotnet/reactive/blob/main/Rx.NET/Documentation/IntroToRx/B_Disposables.md
好吧,对问题的反馈不多,我想它有点小众,就这样:
如果您使用
volatile bool _isDisposed
与 BooleanDisposable
相比,前者是一个更干净的设计。
有关 volatile 关键字的更多信息:这里
一般来说,处置 IDisposable 应该是幂等的 - 您应该能够多次处置它而不会产生负面后果。
其后果是你几乎从不关心 IDisposable 是否已被处置。完成后只需将其丢弃即可。
在我使用 Rx 的过程中,我还没有遇到过需要知道 Disposable 实例是否已经被释放的情况。通常,来自 Rx 的 Disposable 对象被组合,然后从订阅中返回。了解一次性用品是否已被处置很少是有用的信息。
如果您需要在 Disposable 被 Dispose 时执行某些操作,那么您可以使用 Disposable.Create 并在操作中执行您需要执行的任何操作。 因此,我对 BooleanDisposable 的唯一指导方针是,如果您认为需要它,您的设计可能会比需要的更复杂。在这方面,类似于终结器的指南。