我得到了一个文件流:
tempOutputStream = new FileStream(sTempFileName, FileMode.OpenOrCreate,
FileAccess.ReadWrite, FileShare.ReadWrite);一旦创建了文件,您就可以创建额外的FileStreams来读/写tempOutputStream。有没有一种方法可以关闭所有不指向每个流obj的引用?或者至少对于创建流的第一个。
问题是,我想删除文件,但其中一个流没有关闭,所以我在File.Delete中得到了一个异常……
谢谢。
你好,列昂尼德
发布于 2010-11-04 03:44:41
不,没有。
您需要修复您的代码,并确保当您使用完所有流时,它们将被关闭。
使用using语句。
发布于 2010-11-04 03:52:24
一种可能的解决方案是:
List<Stream>Dispose(),并从Dispose()中创建每个流,并从列表Dispose() F217Dispose()>中创建每个流
这样,您就可以将您的功能隐藏在它应该在的地方,而不是在主代码行中。
另一种方法是防止硬重构:
我猜您的代码中有类似于
RegisterStreamChild(Stream Parent, Stream Child);CloseAllChildSteams(Stream Parent)的东西(我不知道流是如何duplicated...)
Map<Stream, list<Stream>>和几个方法:Stream s=originalStream.GetStream();
对于流复制的发生,
https://stackoverflow.com/questions/4090977
复制相似问题