Правильнее всего было бы сделать так, чтобы параметр конструктора для потокового редактора указывал, должен ли поток располагаться, когда используется конструктор.Учитывая, что Microsoft этого не сделала, было бы неплохо определить класс NonDisposingStream (Of T as Stream), который оборачивает поток, но не передает вызов Dispose для обернутого потока.Затем можно передать новый NonDisposingStream в конструктор StreamWriter, и базовый поток будет безопасен для удаления (необходимо, конечно, избавиться от потока самостоятельно).
Наличие объекта, которыйможет распоряжаться переданным объектом полезно.Хотя такое поведение не совпадает с обычной схемой, в которой создатель объекта обращается с его удалением, часто бывают ситуации, когда создатель объекта не знает, как долго этот объект будет фактически необходим.Например, можно ожидать, что метод создаст новый StreamWriter, который использует новый поток.Владелец StreamWriter будет знать, когда он должен быть утилизирован, но может не знать о существовании внутреннего потока.Создатель внутреннего потока не будет знать, как долго будет использоваться внешний StreamWriter.«Передача» права собственности на поток StreamWriter решает проблему утилизации в этом конкретном (общем) случае.