在我的应用程序中,我使用的是OpenFileDialog,然后将加载的文件分配给LoadedFile字段。 我发现如果我打开3个文件,所有文件都保持打开状态(尝试对它们做任何事情时拒绝访问)我不知道为什么? 但是,这样做时,它可以正常工作:
if(LoadedFile!=null)
{
LoadedFile.Dispose();
LoadedFile=null;
}
LoadedFile=openFileDialog.GetFile() //pseudo code
够了吗?如果我不这样做,为什么所有文件都保持“开放”?
答案 0 :(得分:3)
如果您没有明确关闭打开的文件,它将保持打开状态并且您将获得访问冲突异常。
您应该在using
语句中打开该文件,以确保它被正确处理(这是您的代码所做的,手动)。
using(File aFile = File.Open("path to file"))
{
// use the file
}
注意:
这与没有与内存有关(你不能自己控制,因为.NET是垃圾收集的)。它涉及资源管理,在这种情况下是打开文件句柄。
答案 1 :(得分:1)
在您致电Dispose()
之前(即声明您不再需要它),该文件将被锁定。
答案 2 :(得分:0)
完成后,您必须关闭文件。 Dispose
就是这么做的。