【问题标题】:C# - Will closing a JsonTextWriter close the underlying StreamWriterC# - 将关闭一个 JsonTextWriter 关闭底层 StreamWriter
【发布时间】:2017-09-27 23:56:51
【问题描述】:

JsonTextWriter 在关闭时会关闭底层流吗?我收到一个代码分析警告,在这种情况下 StreamWriter 'sw' 可能会被多次处理。然而,在 StreamWriter 的构造函数中,我为 'leaveOpen' 参数指定了 true,我认为这会使 strema 保持打开状态,并且必须使用 sw.Close() 手动关闭。

StreamWriter sw = new StreamWriter(stream, new UTF8Encoding(false), 1024, true);
JsonTextWriter jtw = new JsonTextWriter(sw);
jtw.Close();
sw.Close();

【问题讨论】:

    标签: c# json


    【解决方案1】:

    布尔属性JsonTextWriter.CloseOutput 控制对此的行为。根据当前的source code,默认设置为true

    您可以通过将其设置为 false 来阻止关闭示例中的底层编写器:

    jtw.CloseOutput = false;
    

    【讨论】:

      【解决方案2】:

      根据 JsonSoft 文档,如果将 JsonWriter 的 CloseOutput 属性设置为 true,那么它也会关闭 StreamWriter。我会设置该属性并删除 sw.Close 以确保没有歧义

      【讨论】:

        猜你喜欢
        • 2010-11-14
        • 1970-01-01
        • 2013-05-06
        • 2011-05-26
        • 1970-01-01
        • 2018-08-19
        • 1970-01-01
        • 2013-05-31
        • 2010-11-28
        相关资源
        最近更新 更多