以下代码在第二次删除调用时崩溃。
using (var str = new StreamWriter(newFileName))
{
foreach (Entry entry in this.Entries)
{
str.WriteLine(
String.Format(
@"""{0}"";{1:yyyy-dd-MMThh:mm:ss};""none"""
, entry.Data
, entry.Date
)
);
}
}
File.Delete(delFileName);
File.Move(curFileName, delFileName);
File.Move(newFileName, curFileName);
File.Delete(delFileName); // Crash
"The process can not access the file '\\asld.csv' because it is being used by another process."
所以它就像File.Move(curFileName, delFileName)
导致文件上的锁定(或其他东西)而后来不会释放它。
注意:我正在使用由Visual Studio 2008模拟的智能设备。
答案 0 :(得分:0)
我修好了。
问题原因实际上是在异常发生的方法之前的某个时间点调用的另一种方法。
我有一个“加载”方法,我忘记了使用条款。
private void load()
{
this.lstEntries = new List<Entry>();
var delFileName = String.Format(@"{1}\{0}d.csv", this.FilePrefix, this.Folder);
var curFileName = String.Format(@"{1}\{0}c.csv", this.FilePrefix, this.Folder);
if (File.Exists(delFileName) && !File.Exists(curFileName))
{
curFileName = delFileName;
}
if (File.Exists(curFileName))
{
using (var str = new StreamReader(curFileName)) // fixed with using