C# IOException:另一个进程正在使用的文件

C# IOException:另一个进程正在使用的文件,c#,xml,wpf,dataset,C#,Xml,Wpf,Dataset,我知道以前有人问过这类问题,我知道何时抛出此异常。但是,我无法在代码中解析它 我拥有的是一个数据集,我正在尝试将其模式和数据写入xml文件 这是我的密码: //Handler to Application.Startup Event of current Application private void App_Startup(object sender, StartupEventArgs e) { DataFile = new FileInfo("Data.xml"); //Dat

我知道以前有人问过这类问题,我知道何时抛出此异常。但是,我无法在代码中解析它

我拥有的是一个
数据集
,我正在尝试将其模式和数据写入
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”文件

我确信没有其他进程正在访问它,所以我的代码中肯定有一些调用没有释放该文件

我的代码出了什么问题?

您正在调用,这将返回一个打开的流,但是您没有关闭它,这将阻止下一条语句打开同一个文件进行读写

此外,我不希望您必须首先创建文件-我希望
WriteXml
能够做到这一点,因此您应该能够删除
DataFile.create()语句。

您正在调用,这将返回一个打开的流,但您没有关闭它,这将阻止下一条语句打开同一文件进行读写


此外,我不希望您必须首先创建文件-我希望
WriteXml
能够做到这一点,因此您应该能够删除
DataFile.create()完整的语句。

您希望代码做什么?你的文本说你想写,你的方法叫读,你的文件是空的。@nvoigt对不起,我的错。问问题时犯了错误。检查编辑。你希望你的代码做什么?你的文本说你想写,你的方法叫读,你的文件是空的。@nvoigt对不起,我的错。问问题时犯了错误。请检查编辑。对不起,我的错。问问题时犯了错误。请检查编辑。@VijayChavda:好的,我删除了中间的段落-其余的答案仍然存在。抱歉,我的错。问问题时犯了错误。请检查编辑。@VijayChavda:好的,我已经删除了中间的一段-尽管答案的其余部分仍然有效。