Если говорить о 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);
Blazor вроде как поддерживает Aot. https://learn.microsoft.com/en-us/aspnet/core/blazor/webassembly-build-tools-and-aot?view=aspnetcore-9.0
Если говорить о lock, то ,наверно, лучше будет не блокировать при каждом обращении, а только при первом создании.