質問

の方法を考える。

    public static string[] Foo(System.IO.Stream stream)
    {
        XmlTextWriter xmlWriter = new XmlTextWriter(stream,   System.Text.Encoding.ASCII);

        xmlWriter.WriteStartDocument();
        xmlWriter.WriteStartElement("Element");
        xmlWriter.WriteEndElement();
        xmlWriter.WriteEndDocument();
        xmlWriter.Flush();

        return new string[3]{"1", "2", "3"};
    }

と、呼び出し元のコード

using(MemoryStream memStream = new MemoryStream())
{
     string[] playerIDs = PlayerCommand.Foo(stream);
     // do some stuff with stream and playerIDs
}
コントロールは、usingディレクティブの外に通過すると、

、(ストリームが無用になるだろう)のXmlWriterが明示的にFooの中で閉じられていなかった問題があるのでしょうか?

また、不快な方法間のストリームを通過している、(それを圧縮し、それを離れて提出されます)呼び出し元のコードにXMLWritingの結果を渡すために良い方法はありますか?

事前のおかげで、 グレッグ

役に立ちましたか?

解決

ここで問題ありません。 StreamWriterのDispose()方法は、基本的には第一、それは限り、ストリームの生きているようにぶら下がって、それを残してOKです(上記のん)ので、限り、あなたはFlush()自身をカバーしてきたように、Flush()を呼び出し、基になるストリームを配置します。

他の回答がライター自体を配置する提案が、それは同様に基本となるストリームを配置しますので、それは、ここでは本当にオプションではありません。

それはあなただけのストリームにXMLドキュメントを入れて、後でそれを使用している場合、私はむしろ代わりにストリームを追跡するXMLドキュメント自体を周りに渡すだろう、と述べました。しかし、おそらくあなたのコードはすべてのことのように単純ではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top