2010-02-10 45 views
0

sHi全部,RIA服務域服務類中的緩慢操作

我使用silverlight 3與RIA服務。我想知道如何處理域服務類中的慢操作?我有一個需要幾分鐘的操作。一分鐘之後,客戶端正在等待服務器的響應,我得到一個WCF超時。

另一種方法也許嗎?可以告訴域服務類來啓動一個操作,然後每5秒輪詢一次服務器以查看它是否完成。

我試着實現這個,我遇到的問題是域服務類是我調用的每個域服務方法的新實例。這是無狀態的意思,我不能讓域服務啓動一個線程與我的操作,以後來檢查它。

例如從客戶端

呼叫域服務 - 「開始運作」(這將啓動一個新的線程)從客戶

呼叫域服務 - 「在運行完成」 - 這不工作,因爲我打電話的新實例域名服務

任何想法?

回答

1

您可以讓您的服務操作返回某種類型的請求標識符,並存儲在域服務的靜態成員(例如,將id與請求結果和狀態關聯的字典)中。該服務會產生一個線程異步處理此請求(防止WCF超時)。線程完成時,靜態成員將被線程更新。

然後,您可以使用標識符從SilverLight進行輪詢。域服務的新實例將使用靜態成員來返回狀態和結果。