С# Доступ к базе данных 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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