2009-04-13 59 views

回答

2

您可能會被拋出的是,必須異步處理Silverlight中的Web服務調用。

當你定義一個WebMethod時,比如說你有一個名爲WorkMan的類叫做DoWork。您在Silverlight的代碼最終會看起來像:

WorkManSoapClient client = new WorkManSoapClient(); 
client.DoWorkCompleted += new EventHandler<DoWorkCompletedEventArgs>(this.DoWorkCompleteHandler); // where DoWorkCompletedHandler handles the callback. 

然後你打電話給你的實際方法,並允許回調處理結果。

client.DoWorkAsync(); 

如果你的webmethod返回一個值,你的EventArg對象將有一個Result屬性,你可以利用它的結果。

最後一點:個人風格的東西,但我喜歡lambda表達式,而不是爲回調生成一個全新的方法。我可能會寫如下內容:

WorkManSoapClient client = new WorkManSoapClient(); 
client.DoWorkCompleted += (s,e) => { 
    if(e.Result != null){ 
     object foo = e.Result; 
    } 
}; 
client.DoWorkAsync(); 
+0

我很抱歉,但這劑量對我有效,我仍然無法從方法中獲得值。 – 2009-04-14 12:12:58