2014-09-04 137 views
0

我目前在使用Xamarin C#的iOS应用程序中使用SOAP Web服务。我想要一个嵌套的回调来继续在主UI线程上执行。这里的例子:异步Web服务的嵌套回调

[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()'?

UPDATE:

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

回答

1

内调用的最简单的方法是简单地调用UpdateUIMethod内部WSMethodCallBack后你叫ws.EndWSMethod。您需要将拨打UpdateUIMethod的电话回传给用户界面。

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

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

+0

我用这个Task.ContinueWith,它的工作原理! http://msdn.microsoft.com/en-us/library/ee372288(v=vs.110).aspx – yonasstephen 2014-09-08 07:30:30