C# 流-无法访问已关闭的流
我在C# 流-无法访问已关闭的流,c#,stream,C#,Stream,我在流中遇到了一个小问题,标题中出现了一个异常 我把它放在一个using语句中,这个语句在一个循环中,我看到的大多数帖子都说要删除using语句并“续订”它: 异常发生在循环的第二次迭代中。我尝试使用语句删除,但没有效果 以下是总体思路: for (blah blah blah) { using (Stream strm = externalStreamProvider.GetStream(some params) { if (stream.Position
流中遇到了一个小问题,标题中出现了一个异常
我把它放在一个using
语句中,这个语句在一个循环中,我看到的大多数帖子都说要删除using
语句并“续订”它:
异常发生在循环的第二次迭代中。我尝试使用
语句删除,但没有效果
以下是总体思路:
for (blah blah blah)
{
using (Stream strm = externalStreamProvider.GetStream(some params)
{
if (stream.Position != 0) //exception is here on 2nd iteration
...........
}
}
但是,我使用的是抽象的,所以我不能像myStream=newstream()
那样重新创建它
我正在使用外部流
提供程序,因此无法更改获取流
的方式
关于如何解决这个问题有什么想法吗
对于任何含糊不清的内容,我深表歉意,如果有不清楚的地方,请告诉我。似乎externalStreamProvider
每次都返回相同的流实例。。。由于您在第一次迭代中关闭了它,它在第二次迭代中失败了
如果您希望在每次迭代中使用相同的流,则应将该流置于循环之外:
using (Stream strm = externalStreamProvider.GetStream(some params)
{
for (blah blah blah)
{
if (stream.Position != 0)
...........
}
}
编辑:刚刚看到这个评论:
当在stream.Position上引发异常时,它是第二次迭代中stream的一个全新实例
在这种情况下,唯一的解释是externalStreamProvider
返回的流已经关闭;但是问题不在您发布的代码中…似乎externalStreamProvider
每次都返回相同的流实例。。。由于您在第一次迭代中关闭了它,它在第二次迭代中失败了
如果您希望在每次迭代中使用相同的流,则应将该流置于循环之外:
using (Stream strm = externalStreamProvider.GetStream(some params)
{
for (blah blah blah)
{
if (stream.Position != 0)
...........
}
}
编辑:刚刚看到这个评论:
当在stream.Position上引发异常时,它是第二次迭代中stream的一个全新实例
在这种情况下,唯一的解释是externalStreamProvider
返回的流已经关闭;但是问题不在你发布的代码中…是的,你的问题很模糊。您可以通过添加一些代码来改进它,而不需要任何代码,这很难说anything@tnw是的,我看到编辑了。但我看不到任何代码可供讨论blah-blah
s和…
s隐藏该错误。似乎externalStreamProvider每次都返回相同的流实例。。。因为您在第一次迭代中关闭了它,所以在第二次迭代中失败了second@ThomasLevesque-您应该将“externalStreamProvider每次都返回相同的流实例”作为答案。是的,您的问题很模糊。您可以通过添加一些代码来改进它,而不需要任何代码,这很难说anything@tnw是的,我看到编辑了。但我看不到任何代码可供讨论blah-blah
s和…
s隐藏该错误。似乎externalStreamProvider每次都返回相同的流实例。。。因为您在第一次迭代中关闭了它,所以在第二次迭代中失败了second@ThomasLevesque-您应该将“externalStreamProvider每次都返回相同的流实例”作为答案