BooleanDisposable руководство по использованию

Как общее руководство по кодированию, когда следует использовать BooleanDisposable из реактивных расширений?

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

2 ответа

Как правило, утилизация IDisposable должна быть идемпотентной - вы должны иметь возможность утилизировать ее несколько раз без негативных последствий.

Последствия этого состоят в том, что вам почти никогда не важно, был ли удален IDisposable или нет. Вы просто избавляетесь от этого, когда закончите.

За время использования Rx я не сталкивался с ситуацией, когда мне нужно было узнать, был ли удален экземпляр Disposable. Обычно одноразовые объекты из Rx составляются, а затем возвращаются из подписок. Знание того, был ли Утилизируемый предмет утилизирован, является редко полезной информацией

Если вам нужно что-то сделать, когда Disposable утилизируется, вы можете просто использовать Disposable.Create и делать все, что вам нужно сделать в действии.

Таким образом, единственное правило, которое я бы сказал в отношении BooleanDisposable, заключается в том, что если вы считаете, что вам это нужно, ваш дизайн может быть более сложным, чем он должен быть. В этом отношении похоже на руководство для финализаторов.

Хорошо, не много отзывов по вопросу, я думаю, что это немного ниша, здесь это идет:

Если вы положили с помощью volatile bool _isDisposed против BooleanDisposable бывший более чистый дизайн.

Подробнее о ключевом слове volatile: здесь

Другие вопросы по тегам