2010-09-06 130 views
0

我們的應用程序在啓動時下載了大量數據。它需要所有操作的大部分數據。這是一個問題:只有在加載數據後才能執行一些操作。由於它異步加載,大多數用戶操作會引發異常。
我試過AutoResetEvent.WaitOne(),但it doesn't work correctly

可以做些什麼來避免它?提前致謝。異步加載數據的問題

回答

0

通過服務暴露您的數據,並暴露數據是否加載,加載,無法加載等指標。您的用戶界面然後可以使用此指標來確定用戶界面元素的可用性(通常通過命令)。

在數據加載之前,您絕對不應該阻止您的用戶界面 - 這會破壞您被迫首先異步執行的全部目的。相反,您的用戶界面應該根據數據的可用性在其加載時作出反應。

0

這不是一個Silverlight問題,它是一個普遍的生產者/消費者問題。

根據您的應用程序的確切環境和部分內容,有不同的方法。如果數據生成是非常快速的事情,並且只需要消費1個特定數據類型的單位,那麼在消費者中,您可以輪詢一次數據生成後更改的標誌。或者,您可以向生產者提供一個函數/方法,以在數據填充後調用。通過這種方式,您可以將數據推送到僅顯示可用內容的模塊。

更復雜的例子將涉及排隊和信號,但這應該讓你開始。