IOException:另一个进程

时间:2016-08-18 06:10:21

标签: c# xml wpf dataset

我知道之前已经问过这类问题,并且我知道什么时候抛出这个异常。但是,我无法在我的代码中解决它。

我所拥有的是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”文件。

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

我的代码有什么问题?

1 个答案:

答案 0 :(得分:8)

你正在调用FileInfo.Create(),它会返回一个开放的流 - 但是你不会关闭它,这会阻止下一个语句打开同一个文件来读写它。

此外,我不希望你必须先创建文件 - 我希望WriteXml能够做到这一点,所以你应该能够删除{{1}完全声明。