File.Move затем Delete не поддерживается Compact Framework 2.0?
Следующий код вылетает при втором вызове Delete.
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.
1 ответ
Я починил это.
Причина проблемы была на самом деле в другом методе, который вызывался в какой-то момент времени до того, как произошла исключительная ситуация.
У меня был метод "загрузки", где я забыл предложение использования.
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