为什么我打开的文件仍然打开,除非我Dispose()它们?

时间:2011-04-16 16:18:26

标签: c# file openfiledialog

在我的应用程序中,我使用的是OpenFileDialog,然后将加载的文件分配给LoadedFile字段。 我发现如果我打开3个文件,所有文件都保持打开状态(尝试对它们做任何事情时拒绝访问)我不知道为什么? 但是,这样做时,它可以正常工作:

if(LoadedFile!=null)
{
  LoadedFile.Dispose();
  LoadedFile=null;
}

LoadedFile=openFileDialog.GetFile() //pseudo code

够了吗?如果我不这样做,为什么所有文件都保持“开放”?

3 个答案:

答案 0 :(得分:3)

如果您没有明确关闭打开的文件,它将保持打开状态并且您将获得访问冲突异常。

您应该在using语句中打开该文件,以确保它被正确处理(这是您的代码所做的,手动)。

using(File aFile = File.Open("path to file"))
{
 // use the file
}

注意:

这与没有与内存有关(你不能自己控制,因为.NET是垃圾收集的)。它涉及资源管理,在这种情况下是打开文件句柄。

答案 1 :(得分:1)

在您致电Dispose()之前(即声明您不再需要它),该文件将被锁定。

答案 2 :(得分:0)

完成后,您必须关闭文件。 Dispose就是这么做的。