所以我有一個使用MVVM模式(Caliburn.Micro)的WPF應用程序。我得到了觀點和觀點模型,基本上缺少的是數據。數據將從WCF服務,本地存儲或內存/緩存中「按需」檢索 - 原因是允許離線模式並避免不必要的服務器通信。另一個要求是數據是異步檢索的,所以UI線程不會被阻塞。MVVM和異步數據訪問
所以我想創造某種「AssetManager」的的的ViewModels使用請求數據:
_someAssetManager.GetSomeSpecificAsset(assetId, OnGetSomeSpecificAssetCompleted)
請注意,這是一個異步調用。儘管我遇到了一些不同的問題。如果同一資產在不同的視圖模型下(大致)同時被請求,我們如何確保我們不做不必要的工作,並且它們都獲得了我們可以綁定的相同對象?
不知道我有正確的做法。我一直在看Reactive Framework - 但我不知道如何在這種情況下使用它。我可以使用任何有關框架/技巧/模式的建議?這似乎是一個相當普遍的情況。
現在,第一個要求提供id 5的人得到了真正的請求,而其他所有連續詢問的人都會聽到相同的請求。 – 2012-04-10 06:36:35
真棒:)。謝謝。 – Pking 2012-04-10 07:34:36
更聰明的是,如果你實際上沒有從字典中刪除這個項目,它將永遠不需要再次請求資源。我沒有這樣做,因爲它是內存泄漏(即該字典變得越來越大),並且編碼某種MRU緩存策略會使此示例更少說明:) – 2012-04-10 07:38:59