С# Доступ к базе данных Sqlite после перемещения файла ⇐ C#

Место общения программистов C#
Anonymous
С# Доступ к базе данных Sqlite после перемещения файла

Сообщение Anonymous »

Это приложение .NET (MAUI). В рамках процедуры обновления я загружаю и заменяю файл Sqlite .db3.
Изначально я начал с:

Код: Выделить всё

File.Move(oldFile, newFile);
var result = RunQuery();
Я заметил, что когда запрос выполнялся до того, как операция перемещения была полностью завершена (что приводило к ошибке ввода-вывода). Я решил написать свою асинхронную функцию копирования:

Код: Выделить всё

await using (var sourceStream = File.Open(sourceFile, FileMode.Open))
{
var options = new FileStreamOptions()
{
Mode = FileMode.Create,
Access = FileAccess.Write,
BufferSize = 0
};
await using (var destinationStream = File.Open(destinationFile, options))
{
await sourceStream.CopyToAsync(destinationStream);
sourceStream.Close();
destinationStream.Close();
File.Delete(sourceFile);
}
}
Это несколько улучшило ситуацию, но при каждом запуске я получаю либо некорректную базу данных, либо, что еще хуже, ошибку «таблица X не найдена». >
У меня никогда не возникало проблем, если я вручную добавлял задержку между перемещением и запросом. Но это ненадежное решение.
Как можно убедиться, что файл полностью записан и готов к запросам?

Подробнее здесь: https://stackoverflow.com/questions/791 ... g-the-file

Вернуться в «C#»