异步Web服务的嵌套回调

时间:2014-09-04 11:53:56

标签: c# web-services asynchronous asynccallback

我目前正在使用Xamarin C#在我的iOS应用程序中使用SOAP Web Service。我希望有一个嵌套的回调来继续在主UI线程上执行。这是一个例子:

[WebService Method]
WSMethod(param A){
     //do something
}

class A
{
    InnerFunction(param A)
    {
         ws.BeginWSMethod(A, new AsyncCallback(WSMethodCallback), WebService);
    }

    WSMethodCallBack(IASyncResult ar)
    {
         //first callback here
         result = ws.EndWSMethod(ar);
    }
}

class B
{
    OuterFunction()
    {
         //define param A..
         InnerFunction(A);

         //nested callback function - to be executed when WSMethodCallback finish
         UpdateUIMethod();
    }
}

WSMethodCallBack执行完后,如何调用'UpdateUIMethod()'?

更新

UpdateUIMethod是A类的实例方法,应该在相应的实例中调用(不是静态方法)

1 个答案:

答案 0 :(得分:1)

最简单的方法是在调用UpdateUIMethod后在WSMethodCallBack内调用ws.EndWSMethod。您需要将对UpdateUIMethod的调用封送回UI。

我并不熟悉Xamarin,但我希望你也可以使用一些新的框架功能,使异步开发变得更简单,尽管很难知道这是否适合你的情况。

从.Net 4.0开始,您可以使用TaskFactory.FromAsync来简化对BeginXXX / EndXXX模式之后的异步方法的调用。