2014-09-04 187 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