2011-04-16 69 views
0

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

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

LoadedFile=openFileDialog.GetFile() //pseudo code 

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

回答

3

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

您应该在using声明中打开该文件,以确保它被正确处理(这是您的代码的手动操作)。

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

注:

这有什么内存做(这你不控制自己,因为.NET是垃圾收集)。这是关于资源管理,在这种情况下打开文件句柄。

+0

好,但什么是记忆,它不是资源? – Miria 2011-04-16 16:26:19

+2

@Miria Memory是一种资源;但并非所有资源都是内存。这个不是内存,但是(如Oded所说)是一个文件句柄。 – razlebe 2011-04-16 16:29:01

1

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

0

完成后您必须关闭文件。 Dispose这样做。

相关问题