Pull to refresh

Comments 2

Если говорить о lock, то ,наверно, лучше будет не блокировать при каждом обращении, а только при первом создании.

var filenameDb = Path.Combine(FileSystem.AppDataDirectory, "app.db3");

if (!File.Exists(filenameDb))
{
    lock (_lockDb)
    {
        if (!File.Exists(filenameDb))
        {
            using var stream = FileSystem.OpenAppPackageFileAsync("ML/app.db3").GetAwaiter().GetResult();
            using (var memoryStream = new MemoryStream())
            {
                stream.CopyTo(memoryStream);
                File.WriteAllBytes(filenameDb, memoryStream.ToArray());
            }
        }        
    }
}

return new LocalDatabase(filenameDb);

В моем коде не "при каждом обращении", а "при каждом создании инстанса". И вы верно подметили, казалось бы, да, зачем, можно локать лишь при первом создании, но тут уже дую на воду после битвы с рандомными пропажами (не сохранениями) данных на рилизе, а это на практике помогло.

Sign up to leave a comment.

Articles