System.Data.SQLite Close () не освобождает файл базы данных

У меня проблема с закрытием базы данных перед попыткой удалить файл. Код всего лишь

 myconnection.Close();    
 File.Delete(filename);

И Delete выдает исключение, что файл все еще используется. Я повторно попробовал Delete () в отладчике через несколько минут, так что это не проблема времени.

У меня есть код транзакции, но он вообще не запускается до вызова Close (). Так что я почти уверен, что это не открытая сделка. Команды sql между открытием и закрытием - это просто выбор.

ProcMon показывает мою программу и мой антивирус, просматривающие файл базы данных. Это не показывает, что моя программа освобождает файл db после close ().

Visual Studio 2010, C #, System.Data.SQLite версии 1.0.77.0, Win7

Я видел ошибку двухлетней давности, похожую на эту, но в журнале изменений сказано, что она исправлена.

Могу я еще что-нибудь проверить? Есть ли способ получить список открытых команд или транзакций?


Новый рабочий код:

 db.Close();
 GC.Collect();   // yes, really release the db

 bool worked = false;
 int tries = 1;
 while ((tries < 4) && (!worked))
 {
    try
    {
       Thread.Sleep(tries * 100);
       File.Delete(filename);
       worked = true;
    }
    catch (IOException e)   // delete only throws this on locking
    {
       tries++;
    }
 }
 if (!worked)
    throw new IOException("Unable to close file" + filename);
82
задан Tom Cerul 15 December 2011 в 15:32
поделиться