Что касается обходных путей go, мне удалось его найти. Если я установлю MainPage
до получения из кэша, то я могу установить его снова после захвата кэша без проблем.
Они оба работают:
protected override async void OnStart()
{
MainPage = new Page();
Akavache.Registrations.Start("Test");
var test = await BlobCache.LocalMachine.GetOrFetchObject("Settings", async () => "New");
MainPage = new MainPage();
}
protected override async void OnStart()
{
Akavache.Registrations.Start("Test");
MainPage = new Page();
var test = await BlobCache.LocalMachine.GetOrFetchObject("Settings", async () => "New");
MainPage = new MainPage();
}
Я все еще Любопытно, почему это происходит. См. комментарий @ BenReierson.
Учитывая эту информацию, лучшим обходным путем будет следующий:
protected override void OnStart()
{
Akavache.Registrations.Start("Test");
var test = BlobCache.LocalMachine.GetOrFetchObject("Settings", async () => "New").GetAwaiter().GetResult();
MainPage = new MainPage();
}
Так что мы на самом деле ждем результат от Акаваче до установки MainPage
. В то время как другой обходной путь работал, немного расточительно установить страницу (что приводит к ее отображению), просто установить другую страницу почти сразу после.