我有一个方法,以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”来正确处理流.
如果我不使用“使用”,而是如下使用它,那么FileStream保持打开,循环的下一次迭代(在同一个文件上操作)会引发异常,告诉该文件已经在使用中:
private FileStream GetFileStream() { FileStream fileStream = File.Open(myFile,FileMode.Open); //Do something return fileStream; }
如果我使用try-finally块,那么我最后关闭流,那么它也会抛出ObjectDisposedException.