2016-08-18 51 views
1

我知道這種類型的問題之前已經被詢問過了,我知道何時拋出這個異常。但是,我無法在我的代碼中解決它。IOException:另一個進程正在使用的文件

我所擁有的是DataSet,我試圖將其模式和數據寫入xml文件。

這裏是我的代碼:

//Handler to Application.Startup Event of current Application 
private void App_Startup(object sender, StartupEventArgs e) 
{ 
    DataFile = new FileInfo("Data.xml"); //DataFile is a `System.IO.FileInfo` 
    Data = new DataSet("Data"); //Data is a `System.Data.DataSet` 

    if (!DataFile.Exists) 
    { 
     DataFile.Create(); 

     // Some code here that initializes `Data` (not referencing DataFile here, 
     // nor doing any IO operation) 

     Data.WriteXml(DataFile.FullName, XmlWriteMode.WriteSchema); //Exception is caught here 
    } 
} 

在我運行該程序,我刪除是 「data.xml」 文件。

我確定沒有其他進程正在訪問它,所以在我的代碼中必須有一些不會釋放文件的調用。

我的代碼有什麼問題?

+0

你期望你的代碼做什麼?你的文字說你想寫,你的方法被稱爲讀,你的文件是空的。 – nvoigt

+0

@nvoigt對不起,我的壞。在提問時犯了一個錯誤。 PL。檢查編輯。 –

回答

8

你打電話給FileInfo.Create(),它返回一個打開的流 - 但你沒有關閉它,這會阻止下一條語句打開同一個文件來讀取它。

此外,我不希望你必須首先創建文件 - 我期望WriteXml這樣做,所以你應該能夠完全刪除DataFile.Create();聲明。

+0

對不起,我的壞。在提問時犯了一個錯誤。 PL。檢查編輯。 –

+0

@VijayChavda:好吧,我已經刪除了中間段落 - 答案的其餘部分仍然存在。 –

相關問題