LocalMachineに保存されたものは物理的にデバイスに永続化されます。だから、アプリやデバイス上で(ユーザーがアプリを削除またはあるデータをクリアしていない場合)、それはまだそこになります再起動する限り、ここで良いのサンプルをたくさん https://github.com/akavache/Akavache
があります保存/アクセスする方法として
オブジェクトの挿入やオブジェクトを取得し、あなたの基本的なアクセス方法であり、その後、非常に便利ですGetOrFetch、GetAndFetchのような拡張メソッドの多く、
がありますここで私はスーパーのものにアクセスする1つの方法を与えることをテストしていない迅速なサンプルです。おそらく拡張メソッドのいくつかを使う方が良いでしょうが、私はこのような例が概念的に有用であると考えています。
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を起動したときのほとんどの場合、 VMまたはサービスクラスの中にいくつかのプロパティとして格納するだけです。すべての変更がオブジェクトに行われたとき、私はちょうど私がアプリはダウン閉じた場合、ユーザーがアプリを起動する右のときに私は、そのオブジェクトの最新バージョンを持っています今知っているその時点でキャッシュ
BlobCache.LocalMachine.InsertObject(someKEy, result).Subscribe()
に挿入します私が与えた
例はあなたがあなたの元の質問を持っていることは正常に動作します...アクセスの完全な受信の方法より多くのです、それはそれが行くその後、存在しない場合は、基本的にキャッシュをチェックします
await BlobCache.LocalMachine.GetOrFetchObject<List<object>>("CacheItems",
async() => await getdatafromAzure(recursive));
アズールに...
LocalMachineは物理デバイスに格納します.Imemoryは、アプリケーションがメモリからアンロードされると消え去る内部辞書に格納し、UserAccountはNTリモート処理アカウントで動作します。
他を試しましたを挿入してメソッドを削除しますか? https://github.com/akavache/Akavache –
Depechie
@Depechieおそらく私は挿入の目的を理解していませんでしたが、これはakavacheキャッシュに完全な新しいオブジェクトを作成するのではなく、 BlobCache.UserAccount.InsertObject( "CacheItems"、新しい項目())を待ちます。これは、アイテムのリストとしてタイプを持つCacheItemsに新しいアイテム挿入を挿入します。 – batmaci
私はGetOr ***メソッドはあなたのための基本呼び出しを行うだけのオーバーロードだと思った。同じキャッシュキーを使用する限り、必要なすべてのアイテムにアクセスできると思います。 – Depechie