tags:

views:

71

answers:

1

Hi, I have written a webmethod that returns the list of the Users althought the service works fine, when I call it from the page the methods in the webservice have return type as void.

+1  A: 

What you might be thrown off by is that web service calls in Silverlight must be handled asynchronously.

When you define a WebMethod, say for example you have one called DoWork on a Class called WorkMan. Your code in the Silverlight would end up looking like:

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

Then you call your actual method and allow the callback to process the result.

client.DoWorkAsync();

If your webmethod returns a value, your EventArg object will have a Result property that you can leverage for the result.

One final note: a personal stylistic thing but I like lambda expressions rather than generating a whole new method for the callback. I might write something like the following:

WorkManSoapClient client = new WorkManSoapClient();
client.DoWorkCompleted += (s,e) => {
    if(e.Result != null){
        object foo = e.Result;
    }
};
client.DoWorkAsync();
David in Dakota
I m sorry but this dosent work for me.I m still not able get the values from the method.
Vinay Pandey