Закрывает ли 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();
JsonTextWriter.CloseOutput
свойство JsonTextWriter.CloseOutput
контролирует поведение при этом. По умолчанию true
значение true
по текущему исходному коду.
Вы можете запретить закрытие основного автора в своем примере, установив его в false:
jtw.CloseOutput = false;
Согласно документации JsonSoft, если вы установите для свойства CloseOutput JsonWriter значение true, оно также закроет StreamWriter. Я бы установил это свойство и удалил sw.Close, чтобы не было никакой двусмысленности