2011-04-16 89 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這樣做。

相關問題