如何在方法中返回之前关闭流

本文关键字:返回 方法 | 更新日期: 2023-09-27 18:24:50

我得到System.IO.IOException,因为我的文件正被另一个进程使用。是因为未闭合的溪流吗?如果是,我该如何关闭它?

public static ReportClass DeserializeRep(string FileWay)
{
    Stream stream = File.Open(FileWay, FileMode.Open);
    BinaryFormatter bformatter = new BinaryFormatter();
    return (ReportClass)bformatter.Deserialize(stream);
}

var CurRep = RequestSerializer.DeserializeRep(paths[selected]);

如何在方法中返回之前关闭流

您应该使用using语句:

public static ReportClass DeserializeRep(string FileWay)
{
    using (Stream stream = File.Open(FileWay, FileMode.Open))
    {
        BinaryFormatter bformatter = new BinaryFormatter();
        return (ReportClass)bformatter.Deserialize(stream);
    }
}

还应该注意的是,using语句会自动调用从IDisposible继承的任何对象的Dispose方法,在这种情况下,该方法会关闭连接,然后处置对象。

IDisposible文档可在此处找到。