2010-12-01 38 views
0

我正在從asp.net「慢慢」進入Silverlight,並對如何處理在Web服務調用完成後需要執行某些代碼的情況有疑問。例如,當用戶單擊數據網格中的行時,將顯示一個允許編輯記錄的對話框。它包含許多組合框,複選框等。因此,我需要首先爲每個組合框加載數據,並且比全部完成加載時,我需要設置綁定的實體。由於我對這種異步事物很陌生,因此我正在考慮設置某種計數器,以便跟蹤已發出多少個呼叫,並在他們完成時減少一個,直到它爲零,此時我可以提升一個負載已經完成的事件,我可以繼續進行依賴於此的事情。但是,這看起來非常笨重。我相信很多人都面臨這個問題,所以你如何做到這一點。如果有幫助,我們使用Prism和MVVM方法,使用Ria服務和Dtos。加載表單和繁忙指示燈的方法

回答

0

你所描述的幾乎是要走的路。你可以用鎖和互斥鎖來做更優雅的事情,但是你的計數器可以工作。它有獎金,你可以看到有多少操作在任何時候仍在「進行中」。

您可以按順序調度您的事件,但這會破壞異步操作的整個目的。

如果你分析了你的用戶界面的每個部分需要什麼,你可能可以在你的異步事件的所有已完成之前做一些操作。確保首先開始最長時間的運行操作可能會有所幫助 - 但不能保證其他較短的操作會先完成。這一切都取決於呼叫發生時客戶端和服務器上的可用資源。

+0

我以爲SL內置了一些魔法。可以使用來自Async CTP的「等待」和「異步」嗎? – epitka 2010-12-01 19:48:31