C # - Будет ли закрытие JsonTextWriter закрыть основной StreamWriter

2

Закрывает ли JsonTextWriter базовый поток при закрытии? Я получаю предупреждение анализа кода, что StreamWriter 'sw' может быть удалено более одного раза в этом сценарии. Однако в конструкторе StreamWriter я указываю true для аргумента "leaveOpen", который, как я полагал, сохранит strema открытым и должен быть закрыт вручную с помощью sw.Close().

StreamWriter sw = new StreamWriter(stream, new UTF8Encoding(false), 1024, true);
JsonTextWriter jtw = new JsonTextWriter(sw);
jtw.Close();
sw.Close();
Теги:

2 ответа

4
Лучший ответ

JsonTextWriter.CloseOutput свойство JsonTextWriter.CloseOutput контролирует поведение при этом. По умолчанию true значение true по текущему исходному коду.

Вы можете запретить закрытие основного автора в своем примере, установив его в false:

jtw.CloseOutput = false;
0

Согласно документации JsonSoft, если вы установите для свойства CloseOutput JsonWriter значение true, оно также закроет StreamWriter. Я бы установил это свойство и удалил sw.Close, чтобы не было никакой двусмысленности

Ещё вопросы

Сообщество Overcoder
Наверх
Меню