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:好的,我已经删除了中间的一段-尽管答案的其余部分仍然有效。