Первоначально я пытался извлечь и кэшировать изображение, используя BlobCache.LocalMachine.LoadImageFromUrl(someURL)
, но обнаружил, что оно
просто перестал отвечать после того, как я вызвал этот метод. (Да, я установил BlobCache.ApplicationName
, я даже позвонил BlobCache.EnsureInitialized()
, и компоновщик SQL3 не был удален компоновщиком.) Поэтому я провел несколько экспериментов и попытался выяснить, в чем дело.
После нескольких часов тестирования я обнаружил, что только мои методы должны работать в моих обстоятельствах:
1
BlobCache.LocalMachine.DownloadUrl(someURL).Wait(); // Can fetch the right image file but it won't store it into cache; The cache disappears if I restart the app
var image = BlobCache.LocalMachine.LoadImage(someURL).Wait().ToNative(); // This part is good
2
BlobCache.LocalMachine.InsertObject<string>(key, value).Wait();
var value = BlobCache.LocalMachine.GetObject<string>(key).Wait(); // This functions well; I can get the correct value right away after a restart
Кроме того, всякий раз, когда я использую await в своем коде, он падает до бесконечного тупика (?) Скажи, var value = await BlobCache.LocalMachine.GetObject<string>(key);
. (Конечно, я импортировал System.Reactive.Linq
.) Возможный обходной путь - использовать вместо него wait()
или subscribe()
.
BlobCache.LocalMachine.GetOrFetchObject () также не будет работать.
P.S .: У меня последняя версия Xamarin.iOS & Mono на моем VS Mac.
Так что я упустил что-то важное при использовании Akavache в Xamarin.iOS?
Пожалуйста, просветите меня.
Я опубликовал вопрос здесь .