我收到了一个文件流:
tempOutputStream = new FileStream(sTempFileName, FileMode.OpenOrCreate,
FileAccess.ReadWrite, FileShare.ReadWrite);
创建文件后,您可以创建其他FileStream来读/写tempOutputStream
。
有没有办法关闭所有这些没有参考每个流obj?或者至少是创建流的第一个。
问题是我想要删除该文件,但其中一个流未关闭,所以我在File.Delete
中得到了一个例外......
谢谢。
此致 列昂尼德
答案 0 :(得分:1)
不,没有。
您需要修复代码并确保在使用完毕后关闭所有流
使用using
声明。
答案 1 :(得分:1)
一种可能的解决方案:
GetNewStream()
List<Stream>
Close()
,Close()
列表中的每个流Dispose()
,Dispose()
列表中的每个流这样你就可以隐藏你的功能,远离你的主要代码。
另一个,防止硬重构:
Stream s=originalStream.GetStream();
之类的东西(我不清楚流是如何复制的......)Map<Stream, list<Stream>>
的单例和几个方法:
RegisterStreamChild(Stream Parent, Stream Child);
CloseAllChildSteams(Stream Parent)