我知道以前曾问过这种类型的问题,而且我知道何时会抛出此异常。但是,我无法在我的代码中解决它。

我只有一个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”文件。

我确定没有其他进程正在访问它,因此我的代码中必须有一些调用不会释放文件。

我的代码有什么问题?

最佳答案

您正在调用FileInfo.Create(),它返回一个打开的流-但是您没有关闭它,这阻止了下一条语句打开同一文件来读取对其的写入。

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

08-19 03:52