2016-08-18 16 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

@nogigt申し訳ありませんが、私の悪い。質問に間違いをした。 Pl。編集を確認してください。 –

答えて

8

FileInfo.Create()はオープ​​ンストリームを返しますが、クローズしていないため、次のステートメントで同じファイルを開いて書き込みができなくなります。

さらに、最初にファイルを作成する必要はありません。WriteXmlにはこのファイルを作成する必要があると思いますので、DataFile.Create();ステートメントを完全に削除してください。

+0

申し訳ありませんが、私の悪い。質問に間違いをした。 Pl。編集を確認してください。 –

+0

@VijayChavda:さて、私は中間の段落を削除しました - 残りの答えはまだ立っています。 –

関連する問題