Приложение создает и фиксирует файл резервной копии.
Я создаю серию повторяющихся резервных копий. который сохраняет несколько резервных копий на диске, а затем удаляет самую старую при превышении порогового значения.
Приложение получает исключение «процесс не может получить доступ к файлу», когда я пытаюсь удалить файл резервной копии. создано во время текущего сеанса.
В приложении я создал упрощенный фрагмент кода (с пометкой базы данных), который воссоздает исключение при каждом запуске.Рассмотрим следующий фрагмент кода:
Код: Выделить всё
var connectionString = "XpoProvider=SQLite;Data Source=filename.db";
_ = XpoDefault.GetConnectionProvider(connectionString, AutoCreateOption.DatabaseAndSchema);
var backupDBFileName = @"BackupDBFile.db";
if (!File.Exists(backupDBFileName))
{
File.Copy("filename.db", backupDBFileName);
}
var connectionString = SQLiteConnectionProvider.GetConnectionString(backupDBFileName);
var provider = XpoDefault.GetConnectionProvider(connectionString, AutoCreateOption.DatabaseAndSchema, out IDisposable[] objsToDispose);
var dictionary = new DevExpress.Xpo.Metadata.ReflectionDictionary();
var dataLayer = new ThreadSafeDataLayer(dictionary, provider);
XpoDefault.DataLayer = dataLayer;
// Dispose/Disconnect
// If there are objects that needs disposing along with the Data Layer, dispose of them
if (objsToDispose != null)
{
foreach (var obj in objsToDispose)
{
obj.Dispose();
}
}
XpoDefault.DataLayer.Dispose();
XpoDefault.DataLayer = null;
// Trying to cleanup
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
try
{
if (File.Exists(backupDBFileName))
{
File.Delete(backupDBFileName);
}
}
catch (Exception ex) {}
Процесс не может получить доступ к файлу BackupDBFile.db, поскольку он используется другим процессом.
Подробнее здесь: https://stackoverflow.com/questions/784 ... te-a-datab
Мобильная версия