Saya mengalami masalah saat menutup database saya sebelum mencoba menghapus file. Kode itu adil
myconnection.Close();
File.Delete(filename);
Dan Hapus memunculkan pengecualian bahwa file tersebut masih digunakan. Saya telah mencoba kembali Delete () di debugger setelah beberapa menit, jadi ini bukan masalah waktu.
Saya memiliki kode transaksi tetapi tidak berjalan sama sekali sebelum panggilan Close (). Jadi saya cukup yakin ini bukan transaksi terbuka. Perintah sql antara buka dan tutup hanya memilih.
ProcMon menunjukkan program saya dan antivirus saya melihat file database. Itu tidak menunjukkan program saya merilis file db setelah close ().
Visual Studio 2010, C #, System.Data.SQLite versi 1.0.77.0, Win7
Saya melihat bug berumur dua tahun seperti ini tetapi changelog mengatakan itu sudah diperbaiki.
Apakah ada hal lain yang bisa saya periksa? Apakah ada cara untuk mendapatkan daftar perintah atau transaksi yang terbuka?
Baru, kode yang berfungsi:
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);