我在调试过程中遇到错误,但在没有调试的情况下运行时却没有。
IOException: The process cannot access the file 'C:\myproj\wwwroot\states.xml' because it is being used by another process.
Error Line: File.Create(filePath)
这是它出现的代码(注意:这是从我的MVC核心控制器的异步方法调用的):
public void SaveListAsXml(IList<T> list, string filePath)
{
var xmlString = ListToXML(list);
var doc = XDocument.Parse(xmlString);
using (var stream = File.Create(filePath))
{
using (var writer = XmlWriter.Create(stream))
{
doc.Save(writer);
}
}
}
当您尝试访问已经打开句柄的某些内容时,通常会抛出这些错误,但在这种情况下,我可以重启PC并在第一次运行调试时出现此错误。一个线索是,我注意到我有时必须逐步完成。在调试器中每行两次(由于异步父方法?)。这感觉就像一个VS bug,但这是我第一次使用MVC Core,所以可能是我的误解。
这两件事是否相关? (即重复的步骤和锁定的文件?)
要确认,当我使用CTRL + F5(没有调试运行)时,这运行正常。创建该文件,然后回读没有问题。
当我运行调试时,它总是抛出此错误,即使我在运行它之前删除了该文件。我是否需要显式关闭文件句柄?