C# 异步Web服务的嵌套回调
我目前正在使用Xamarin C#在iOS应用程序中使用SOAP Web服务。我希望有一个嵌套回调来继续在主UI线程上执行。下面是一个例子:C# 异步Web服务的嵌套回调,c#,web-services,asynchronous,asynccallback,C#,Web Services,Asynchronous,Asynccallback,我目前正在使用Xamarin C#在iOS应用程序中使用SOAP Web服务。我希望有一个嵌套回调来继续在主UI线程上执行。下面是一个例子: [WebService Method] WSMethod(param A){ //do something } class A { InnerFunction(param A) { ws.BeginWSMethod(A, new AsyncCallback(WSMethodCallback), WebServi
[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的实例方法,应该在相应的实例中调用(不是静态方法)最简单的方法是在调用
ws.EndWSMethod
后,在WSMethodCallBack
内部调用UpdateUIMethod
。您需要将对updateimethod
的调用封送回UI
我对Xamarin不太熟悉,但我希望您也可以考虑使用一些较新的框架功能,使异步开发更简单,尽管很难知道这是否适合您的情况
从.Net 4.0开始,您可以使用它来简化对遵循BeginXXX/EndXXX模式的异步方法的调用。我使用了这个任务。ContinueWith可以工作!