任何保存到LocalMachine的內容都會持久保存到設備中。因此,對應用程序或設備重新啓動它仍然會在那裏(如果用戶不刪除應用程序或清除是數據)
至於如何訪問/保存有很多在這裏好樣 https://github.com/akavache/Akavache
的
插入對象和獲取的對象是你的基本的訪問方法,然後有很多的擴展方法一樣GetOrFetch,GetAndFetch,這是非常有用的
下面是一個簡單示例中,我還沒有超級測試給訪問的東西的一種方式。它可能會更好地使用一些擴展方法,但我認爲這樣的例子在概念上是有用的。
BlobCache.LocalMachine.GetObject<Tobject>(someKEy)
.Catch((KeyNotFoundException ke) => Observable.Return<Tobject>(null))
.SelectMany(result =>
{
//object doesn't exist in cache so create a new one
if (result == null)
result = new Tobject();
//apply whatever updates you are wanting to do
//result.SomeField = "bob";
//This will replace or insert data
return BlobCache.LocalMachine.InsertObject(someKEy, result);
})
.Subscribe();
這真的是所有非常無聊的東西:-p只是得到一個對象,並存儲一個對象。在引擎蓋下Akavache做了很多非常酷的優化和同步那些無聊的東西,雖然讓它對我們其他人來說很無聊
在我大多數情況下,當我啓動一個虛擬機時,我從緩存中檢索對象然後將其作爲VM上的某些屬性或某個服務類中的某個屬性進行存儲。然後,當任何更改對該對象進行我只是將它插入到緩存
BlobCache.LocalMachine.InsertObject(someKEy, result).Subscribe()
在這一點上我現在知道,如果應用程序關閉下來,我會擁有最新版本的該對象權當用戶啓動應用程序
我給的例子是更多訪問的整個RX方式......你必須在你原來的問題是什麼工作正常
await BlobCache.LocalMachine.GetOrFetchObject<List<object>>("CacheItems",
async() => await getdatafromAzure(recursive));
這基本上都會檢查緩存,如果它不存在,那麼它去到Azure ...
LocalMachine存儲到物理設備,InMemory只存儲一些內部字典,一旦應用程序從內存中卸載,它就消失,UserAccount與NT遠程處理帳戶一起使用。
您是否測試了其他獲取插入和刪除方法? https://github.com/akavache/Akavache –
Depechie
@Depechie也許我不明白插入的目的,但這會創建全新的對象到akavache緩存中,而不是?等待BlobCache.UserAccount.InsertObject(「CacheItems」,new item());這是否插入一個新的項目插入到我的CacheItems有一個項目列表類型。 – batmaci
我以爲GetOr ***方法只是爲您做基地調用的重載。只要你使用相同的緩存鍵,我認爲你可以得到你需要的所有項目。 – Depechie