我有一个方法,它以
我还有另一种方法,它创建并返回了
现在第一种方法在我尝试访问返回的FileStream时抛出了ObjectDisposedException异常,可能是因为它已经关闭了,因为我使用using来正确处理流。
如果我不使用using,而是按照以下方式使用它,那么FileStream将保持打开状态,循环的下一次迭代(操作相同的文件)将抛出一个告诉文件已经在使用中的异常:
如果我使用try-finally块,在finally中关闭流,那么它也会抛出ObjectDisposedException异常。
我该如何有效地返回FileStream并关闭它?
FileStream
作为输入。这个方法在一个 for 循环中运行。private void UploadFile(FileStream fileStream)
{
var stream = GetFileStream();
// do things with stream
}
我还有另一种方法,它创建并返回了
FileStream
。private FileStream GetFileStream()
{
using(FileStream fileStream = File.Open(myFile, FileMode.Open))
{
//Do something
return fileStream;
}
}
现在第一种方法在我尝试访问返回的FileStream时抛出了ObjectDisposedException异常,可能是因为它已经关闭了,因为我使用using来正确处理流。
如果我不使用using,而是按照以下方式使用它,那么FileStream将保持打开状态,循环的下一次迭代(操作相同的文件)将抛出一个告诉文件已经在使用中的异常:
private FileStream GetFileStream()
{
FileStream fileStream = File.Open(myFile, FileMode.Open);
//Do something
return fileStream;
}
如果我使用try-finally块,在finally中关闭流,那么它也会抛出ObjectDisposedException异常。
我该如何有效地返回FileStream并关闭它?