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
Другие вопросы по тегам