2009-04-13 6 views

Antwort

2

Was Sie wegwerfen können, ist, dass Web-Service-Aufrufe in Silverlight asynchron behandelt werden müssen.

Wenn Sie ein WebMethod definieren, sagen Sie beispielsweise, dass Sie DoWork in einer Klasse namens WorkMan haben. Ihr Code in Silverlight würde am Ende aussehen wie:

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

Dann rufen Sie Ihre aktuelle Methode und lassen Sie den Rückruf das Ergebnis zu verarbeiten.

client.DoWorkAsync(); 

Wenn Ihr Webmethod einen Wert zurückgibt, Ihr EventArg Objekt wird eine Ergebnis-Eigenschaft, die Sie für das Ergebnis nutzen können.

Eine letzte Anmerkung: eine persönliche Stilsache, aber ich mag Lambda-Ausdrücke, anstatt eine ganz neue Methode für den Rückruf zu erzeugen. Ich könnte so etwas wie die folgenden schreiben:

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

Es tut mir leid, aber die dosent Arbeit für me.I ist noch nicht in der Lage, die Werte aus dem Verfahren zu erhalten. –

Verwandte Themen