BooleanDisposable руководство по использованию
Как общее руководство по кодированию, когда следует использовать BooleanDisposable из реактивных расширений?
2 ответа
Как правило, утилизация IDisposable должна быть идемпотентной - вы должны иметь возможность утилизировать ее несколько раз без негативных последствий.
Последствия этого состоят в том, что вам почти никогда не важно, был ли удален IDisposable или нет. Вы просто избавляетесь от этого, когда закончите.
За время использования Rx я не сталкивался с ситуацией, когда мне нужно было узнать, был ли удален экземпляр Disposable. Обычно одноразовые объекты из Rx составляются, а затем возвращаются из подписок. Знание того, был ли Утилизируемый предмет утилизирован, является редко полезной информацией
Если вам нужно что-то сделать, когда Disposable утилизируется, вы можете просто использовать Disposable.Create и делать все, что вам нужно сделать в действии.
Таким образом, единственное правило, которое я бы сказал в отношении BooleanDisposable, заключается в том, что если вы считаете, что вам это нужно, ваш дизайн может быть более сложным, чем он должен быть. В этом отношении похоже на руководство для финализаторов.
Хорошо, не много отзывов по вопросу, я думаю, что это немного ниша, здесь это идет:
Если вы положили с помощью volatile bool _isDisposed
против BooleanDisposable
бывший более чистый дизайн.
Подробнее о ключевом слове volatile: здесь