【发布时间】:2012-03-08 04:56:25
【问题描述】:
当“使用”块篡改了我预先创建的对象时,我真的很生气。我有这段代码
class Asset {
public Stream FileStream { get; set; }
public Asset(string fileName) {
FileStream = ...open a file stream...;
}
}
// Somewhere else
Asset asset = new Asset("file.txt");
using (var reader = new StreamReader(asset.FileStream)) {
//blah blah blah
}
// Somewhere else else
using (var reader2 = new StreamReader(asset.FileStream))
=> 抛出此异常:
System.ArgumentException:流不可读。
在 Visual Studio 中的逐步调试帮助我知道asset.FileStream 已在第一个“使用”块之后被释放。
请帮我救他的命 :(( 如何从流中创建克隆流?
【问题讨论】:
-
我认为简单的答案是在你完成之前不要释放流......当你使用 using 块时,它会释放阅读器,然后释放流。