相关疑难解决方法(0)

有没有办法在不关闭BaseStream的情况下关闭StreamWriter?

我的根本问题是,当using调用Disposea时StreamWriter,它也会处理BaseStream(同样的问题Close).

我有一个解决方法,但正如你所看到的,它涉及复制流.有没有办法这样做而不复制流?

这样做的目的是将字符串(最初从数据库中读取)的内容获取到流中,因此可以由第三方组件读取该流.
注意:我无法更改第三方组件.

public System.IO.Stream CreateStream(string value)
{
    var baseStream = new System.IO.MemoryStream();
    var baseCopy = new System.IO.MemoryStream();
    using (var writer = new System.IO.StreamWriter(baseStream, System.Text.Encoding.UTF8))
    {
        writer.Write(value);
        writer.Flush();
        baseStream.WriteTo(baseCopy); 
    }
    baseCopy.Seek(0, System.IO.SeekOrigin.Begin);
    return baseCopy;
}
Run Code Online (Sandbox Code Playgroud)

用作

public void Noddy()
{
    System.IO.Stream myStream = CreateStream("The contents of this string are unimportant");
    My3rdPartyComponent.ReadFromStream(myStream);
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我正在寻找一个名为的假想方法BreakAssociationWithBaseStream,例如

public System.IO.Stream CreateStream_Alternate(string value)
{
    var baseStream = new System.IO.MemoryStream();
    using (var writer …
Run Code Online (Sandbox Code Playgroud)

c# dispose stream

107
推荐指数
4
解决办法
4万
查看次数

标签 统计

c# ×1

dispose ×1

stream ×1